How to forget the “Never ask again” choice in Android M runtime permission dialog

寵の児 提交于 2019-11-27 18:27:51

问题


I wish to know where the "Never ask again" checkbox boolean flag is stored and how to clear its value? Not necessarily programmatically, but manually - via setting, command or some tool. Tried clearing app data, uninstall, both uninstall and clear, tried manual switching the permissions on/off back and forth, tried even setting up a newer Marshmallow image for the emulator but no luck!


回答1:


Both clearing data (Settings > Apps > your app > Storage > Clear Data) and uninstalling the app clear the status of this flag, along with clearing everything else related to runtime permissions for the app.

This behavior was tested on a Nexus 5 running Android 6.0, via this sample app.

I seem to recall seeing a manual option for this somewhere, but I can't find it now. It may be something that existed back in the M Developer Preview releases and got pulled for the final 6.0 release.




回答2:


You can "forget" it by clearing the data from app's settings.

EDIT: As @me_ pointed out, just clearing app data may not reset the "don't ask again" condition in some devices. In such cases manually turning on and then turning off the permissions from app's settings will do the trick.

But if you want to find if a permission has been set not to request again you can check it programatically by using the onRequestPermissionsResult() method.

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: I have answered full implementation at this answer.




回答3:


Found it:

System Settings > Apps > Reset App Preferences (in the menu)




回答4:


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

You should Enable and the Disable the permissions manually in the settings->apps permissions area.

I tried all suggestions given on this page. None of them worked. Manual enable and disable returned the dialog box.

click the youtube post above to verify this is the correct answer




回答5:


@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())));
        }
    }
}



回答6:


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

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



来源:https://stackoverflow.com/questions/33609834/how-to-forget-the-never-ask-again-choice-in-android-m-runtime-permission-dialo

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!