8

在此处输入图像描述

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

4

6 回答 6

9

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

此行为已通过此示例应用在运行 Android 6.0 的 Nexus 5 上进行了测试。

我似乎记得在某处看到过手动选项,但我现在找不到。它可能存在于 M Developer Preview 版本中,并在最终的 6.0 版本中被删除。

于 2015-11-09T13:23:14.507 回答
7

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

编辑: 正如@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:我已经回答了这个答案的完整实施。

于 2016-12-22T16:55:25.930 回答
3

找到了:

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

在此处输入图像描述

于 2015-11-09T13:18:09.610 回答
2

Only solution that worked for me is:

  1. Go to the Apps Permission
  2. Enable and disable all permissions

It will then forget the "Never ask again" choice

App permissions list

You can check it out in this video https://www.youtube.com/watch?v=F8hQfmYTEaQ

于 2019-08-03T23:13:41.910 回答
1
@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())));
        }
    }
}
于 2019-03-12T07:26:37.760 回答
0

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

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

我尝试了此页面上给出的所有建议。他们都没有工作。手动启用和禁用返回对话框。

单击上面的 youtube 帖子以验证这是正确的答案

于 2018-06-20T07:05:34.040 回答