对话框的Android M权限问题“不要再询问”
这是通过Scoped Directory Access授予权限的更简单的方法,但Dialog将显示一个名为“不再询问”的复选框。 如果用户选择不再询问并拒绝该请求,则来自您的应用的对于给定目录的所有未来请求将被自动拒绝,并且不会向用户呈现请求UI。 如果用户遗憾或误打了该复选框,应用程序如何补救? 应用程序无法获得权限对话框。
我们该如何处理?
我们应该使用shouldShowRequestPermissionRationale.Please通过这个:
private void insertDummyContactWrapper() {
int hasWriteContactsPermission = checkSelfPermission(Manifest.permission.WRITE_CONTACTS);
if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
if (!shouldShowRequestPermissionRationale(Manifest.permission.WRITE_CONTACTS)) {
showMessageOKCancel("You need to allow access to Contacts",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermissions(new String[] {Manifest.permission.WRITE_CONTACTS},
REQUEST_CODE_ASK_PERMISSIONS);
}
});
return;
}
requestPermissions(new String[] {Manifest.permission.WRITE_CONTACTS},
REQUEST_CODE_ASK_PERMISSIONS);
return;
}
insertDummyContact();
}
有没有办法改变这个标志?
开发人员不能更改该标志。 否则,复选框没有任何意义,因为开发人员会通过更改标志来忽略它。
但是,您的问题指出了范围性目录访问中存在相当大的缺陷:用户修改该标志的能力有限。 在“设置”中似乎没有具体改变此状态的地方,用户可以手动授予拒绝的运行时权限的方式。
在运行7.1预览版的Nexus 5X上,“清除数据”将重置此标志,但具有更广泛的影响。 在运行7.1的Google Pixel上以及运行Android 7.0的Nexus 5X上,即使完全卸载应用程序,也不会重置此标志。
我已经提交了关于此的错误报告。 我怀疑这种情况在短期内会有很大的改善 - 最好的情况是,他们可以修复这种情况,以便“清晰数据”能够可靠地工作。
我认为你需要做的是使用方法shouldShowRequestPermissionRationale(String),如果用户拒绝了权限并选中“不要再询问”,它将返回false。
你应该做的是显示一条警告,解释用户为什么需要权限或执行回退,如禁用某些功能。
希望能有所帮助。
链接地址: http://www.djcxy.com/p/93993.html上一篇: Android M permission issue with Dialog "Don't ask again"