Ran*_*mar 13 android android-permissions
这是通过Scoped Directory Access授予权限的更简单方法,但Dialog将显示一个名为"Do not ask again"的复选框.如果用户选择不再询问并拒绝该请求,则将自动拒绝您应用中对给定目录的所有未来请求,并且不会向用户显示请求UI.如果用户后悔或错误地点击了该复选框,应用程序如何解决?应用无法获得权限对话框.
我们怎么办呢?
有什么方法可以改变这面旗帜?
开发人员无法更改该标志.否则,拥有复选框是没有意义的,因为开发人员会通过更改标志来忽略它.
但是,您的问题指出了作用域目录访问中相当严重的缺陷:用户更改该标志的能力有限."设置"中似乎没有专门更改此状态的位置,即用户可以手动授予拒绝的运行时权限的方式.
在运行7.1预览版的Nexus 5X上,"清除数据"将重置此标志,但效果更广.在运行7.1的Google Pixel和运行Android 7.0的Nexus 5X上,没有任何内容可以重置此标志,即使是完全卸载该应用.
我已经提交了一份关于此的错误报告.我怀疑在短期内情况会有很大改善 - 充其量,他们可能会解决这个问题,因此"清晰数据"可靠地运作.
我们应该使用shouldShowRequestPermissionRationale。请完成以下操作:
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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9299 次 |
| 最近记录: |