【问题标题】:Android Request Permission System Overlay Detected检测到 Android 请求权限系统覆盖
【发布时间】:2017-03-14 05:18:43
【问题描述】:

我遇到了一个问题。当用户成功授予所有必需的权限时,不会发生这种情况。它发生在用户拒绝许可时。我向用户显示一个对话框以启用 Apps->AppName->Settings 的权限。我把用户带到那里。但是当用户尝试启用任何权限时,它会显示消息。 检测到系统覆盖并且不允许用户启用任何权限。我搜索了很多谷歌和 Stackoverflow,但没有找到任何解决方案。有些人通过禁用 toast 解决了解决方案,但我没有显示任何 toast。

注意:只有在任何权限被拒绝时才会出现此问题。

这是我的代码

private void showPermissionDialog(String message, final int permissionCode){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Permission Required");

    if(permissionCode == Constants.REQ_CODE_PERMISSION_SYSTEM_OVERLAY_WINDOW) {
        builder.setMessage(Constants.getOverlayNotEnabledMessage(Constants.getInstance(this)));
    } else {
        builder.setMessage(message + " To enable go to apps, Select " +
                getResources().getString(R.string.app_name) + " Enable permissions now?");
    }

    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            dialogInterface.dismiss();
            if(permissionCode == Constants.REQ_CODE_PERMISSION_READ_CONTACTS){
                MainActivity.this.finish();
            }
        }
    });
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {

            if(permissionCode == Constants.REQ_CODE_PERMISSION_SYSTEM_OVERLAY_WINDOW) {
                requestOverlayPermissions();
            } else {
                Intent intent = new Intent();
                intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                Uri uri = Uri.fromParts("package", getApplicationContext().getPackageName(), null);
                intent.setData(uri);
                MainActivity.this.startActivityForResult(intent, permissionCode);
            }
        }
    });
    AlertDialog alertDialog = builder.create();
    alertDialog.setCancelable(false);
    alertDialog.show();
}

【问题讨论】:

    标签: android overlay android-permissions application-settings runtime-permissions


    【解决方案1】:

    在android M中,没有解决这个问题的办法。如果您的应用程序需要SYSTEM_OVERLAY_WINDOW 权限,则您无法从“设置”中启用或禁用权限。唯一的解决方案(开发者方面没有解决方案)是清除应用数据,这将再次请求权限

    【讨论】:

      猜你喜欢
      • 2017-02-03
      • 1970-01-01
      • 2015-04-30
      • 2018-11-09
      • 2013-01-19
      • 2017-09-26
      • 1970-01-01
      • 2015-12-15
      • 1970-01-01
      相关资源
      最近更新 更多