我遇到了问题,似乎我的Android Studio没有识别出AndroidManifest.xml文件中的uses-permission权限。在我的主活动中,当我尝试调用一些需要INTERNET和ACCESS_NETWORK_STATE权限的函数时,活动似乎没有意识到我已经在AndroidManifest.xml文件中添加了这些权限。
下面是调用ACCESS_NETWORK_STATE的方法。在调用时:
在我的主活动onCreate中:
以下是翻译的结果:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
下面是调用ACCESS_NETWORK_STATE的方法。在调用时:
public boolean isNetworkAvailable(Context context) {
boolean isOnline = false;
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
try {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
NetworkCapabilities capabilities = manager.getNetworkCapabilities(manager.getActiveNetwork());
isOnline = capabilities != null && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
} else {
NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo();
isOnline = activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
}
} catch (Exception e) {
e.printStackTrace();
}
return isOnline;
}
private void showConnectDialog() {
Log.d(TAG, "showConnectDialog: trying to show the connect dialog");
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this,R.style.MyAlertDialogStyle);
builder.setMessage("Please connect to the internet to proceed further")
.setCancelable(false)
.setPositiveButton("Connect", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
}
});
builder.show();
}
在我的主活动onCreate中:
if (!isNetworkAvailable(MainActivity.this)){
showConnectDialog();
}
if (isServicesOK()) {
init();
}
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
AdView mAdView = findViewById(R.id.adViewMain);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
以下是翻译的结果:
您可以在下面附上的图片中看到,我在isNetworkAvailable方法和Google AdMob中遇到了错误。如果我将鼠标悬停在错误上,Android Studio会提示我需要为isNetworkAvailable方法添加ACCESS_NETWORK_STATE权限,并为Google AdMob添加INTERNET权限。但是我已经在我的AndroidManifest.xml中添加了它们。还有什么我漏掉的吗? 非常感谢您的帮助。