检查权限

时间:2019-08-08 08:24:48

标签: android

我的应用程序使用Internet访问来展示广告,因此我拥有Manifest中声明的Internet权限。 在最新的Android版本中,用户可以禁用此权限。 我的问题是,如果用户取消此权限,则该应用程序将无法加载广告。 我知道我可以检查是否存在任何当前连接,在这种情况下,我将不会尝试加载该应用程序。但是我想知道用户是否在Android设置中拒绝了该权限。 这个想法是提示用户启用它,否则该应用程序将无法运行。

我添加了华为Android Pie的屏幕截图,用户可以在其中修改这些设置

2 个答案:

答案 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连接的信息。