如何忘记Android M运行时权限对话框中的“永不再问”选项

问题描述 投票:6回答:5

enter image description here

我想知道存储“永不再问”复选框布尔标志的位置以及如何清除它的值?不一定是以编程方式,而是手动 - 通过设置,命令或某些工具。尝试清除应用数据,卸载,卸载和清除,尝试手动切换权限开/关来回,尝试甚至为模拟器设置较新的Marshmallow图像,但没有运气!

android android-6.0-marshmallow runtime-permissions
5个回答
8
投票

清除数据(设置>应用程序>您的应用程序>存储>清除数据)和卸载应用程序都会清除此标志的状态,同时清除与应用程序的运行时权限相关的所有其他内容。

此行为是在运行Android 6.0的Nexus 5上通过this sample app测试的。

我似乎记得在某个地方看到了手动选项,但我现在找不到它。它可能是M Developer Preview版本中存在的东西,并且已经被拉到最终的6.0版本中。


4
投票

您可以通过清除应用程序设置中的数据来“忘记”它。

编辑:正如@me_指出的那样,只清除应用数据可能无法重置某些设备中的“不再询问”状态。在这种情况下,手动打开然后关闭应用程序设置的权限将可以解决问题。

但是,如果您想要查找是否已设置权限不再请求,您可以使用onRequestPermissionsResult()方法以编程方式检查它。

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    for(String permission: permissions){
            if(ActivityCompat.shouldShowRequestPermissionRationale(this, permission)){
                //denied
            }else{
                if(ActivityCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED){
                    //allowed
                } else{
                    //set to never ask again
                    Log.e("set to never ask again", permission);
                }
            }
    }
}

PS:我已经在this回答了全部实施。


3
投票

找到了:

系统设置>应用>重置应用程序首选项(在菜单中)

enter image description here


0
投票

https://www.youtube.com/watch?v=F8hQfmYTEaQ

您应该在设置 - >应用程序权限区域中手动启用和禁用权限。

我尝试了本页提供的所有建议。他们都没有工作。手动启用和禁用返回对话框。

点击上面的YouTube帖子,验证这是正确的答案


0
投票
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    boolean dontAsk = false;
    if (requestCode == REQUEST_CAM_STORAGE_PERMISSION) {
        for (String allowedPermissions : permissions) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(context, allowedPermissions)) {
                Log.e("Permission: ", "User Has Denied Permission");
            } else if (PermissionChecker.checkCallingOrSelfPermission(context, allowedPermissions) != PackageManager.PERMISSION_GRANTED) {
                Log.e("Permission: ", "User Has Denied Permission with Don't Ask Again");
                dontAsk = true;
                break;
            } else {
                Log.e("Permission: ", "User Has Allowed Permission");
            }
        }

        if (!dontAsk) {
            Log.e("Permission: ", "Dont'Ask False");
            checkPermission();
        } else {
            Log.e("Permission: ", "Dont'Ask True");
            startActivity(new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + this.getPackageName())));
        }
    }
}

0
投票

只有对我有用的解决方案是:

  1. 转到应用程序权限
  2. 启用和禁用所有权限

然后它将忘记“永不再问”的选择

App permissions list

你可以在这个视频https://www.youtube.com/watch?v=F8hQfmYTEaQ中查看

© www.soinside.com 2019 - 2024. All rights reserved.