清除数据(设置 > 应用程序 > 您的应用程序 > 存储 > 清除数据)和卸载应用程序都清除了此标志的状态,以及清除与该应用程序相关的其他所有运行时权限。
这种行为在运行Android 6.0的Nexus 5上通过此示例应用进行了测试。
我记得在某个地方看到过手动选项,但现在找不到了。可能是存在于M Developer Preview版本中并被删除了,在最终的6.0版本中不存在。
PERMISSION_WTF
)之类的东西就好了。 - CommonsWarepublic 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:我已经在这个回答中全面解释了实现。
这样就会忘记“不再询问”的选择。
你可以在这个视频中查看它https://www.youtube.com/watch?v=F8hQfmYTEaQ。@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())));
}
}
}
https://www.youtube.com/watch?v=F8hQfmYTEaQ
您需要在设置->应用程序权限区域手动启用和禁用权限。
我尝试了此页面上提供的所有建议,但都没有起作用。手动启用和禁用仍然会弹出对话框。
点击上面的YouTube帖子以验证这是正确的答案。