我遇到的问题是,我的android studio似乎无法识别androidmanifest.xml文件中的使用权限。在我的主要活动中,当我试图调用一些需要internet和access_network_状态的函数时,该活动似乎没有意识到我已经将权限放入了androidmanifest.xml文件中。
<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_状态的方法。呼叫时的部分
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方法添加访问权限、网络权限、状态权限,以及为google admob添加互联网权限。但是我的androidmanifest.xml中已经有了它们。我还缺什么吗?非常感谢你的帮助。
google admob中的错误
isnetworkavailable方法中存在错误
1条答案
按热度按时间kkih6yb81#
我自己尝试了你的代码,它运行成功。;)
清单文件(添加应用程序id)
布局文件
请清理您的项目并重新构建。它会起作用的。快乐编码!!