我的应用程序使用Internet访问来展示广告,因此我拥有Manifest中声明的Internet权限。 在最新的Android版本中,用户可以禁用此权限。 我的问题是,如果用户取消此权限,则该应用程序将无法加载广告。 我知道我可以检查是否存在任何当前连接,在这种情况下,我将不会尝试加载该应用程序。但是我想知道用户是否在Android设置中拒绝了该权限。 这个想法是提示用户启用它,否则该应用程序将无法运行。
我添加了华为Android Pie的屏幕截图,用户可以在其中修改这些设置
答案 0 :(得分:0)
您只需要首先检查用户是否启用(允许权限)即可。如果没有,则将用户重定向到电话设置,以便用户允许该权限,否则只需完成应用程序即可。
if (ContextCompat.checkSelfPermission(this,Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED )
{
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
// if user blocked permission
android.app.AlertDialog.Builder dlgAlert = new android.app.AlertDialog.Builder(this);
dlgAlert.setPositiveButton("Take me to app settings",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivity(intent);
}
});
dlgAlert.setNegativeButton("Cancel",null);
dlgAlert.setCancelable(true);
dlgAlert.setIcon(R.drawable.appicon);
dlgAlert.setMessage("The app needs the permission please allow it other wise you cannot proceed.");
dlgAlert.setTitle("Oops!");
dlgAlert.create().show();
}
}
else
{
finish();
}
答案 1 :(得分:-1)
如果仅要检查Internet连接,则不必检查权限,因为Internet不是关键权限。您可以简单地使用ConnectivityManager
类来检查设备是否具有活动的互联网连接,然后相应地编写逻辑。
请参考:This有关如何检查Internet连接的信息。