+-
android – 检测是否可以请求或永久拒绝权限
情况
我的一个片段访问相机.所以当然我需要首先检查我的活动中的权限,然后再重定向到它.如果用户拒绝该权限,则该活动完成并将其重定向到他所在的上一个活动.
此外,我想在活动开始时显示一个不同的片段,并检测到该权限被永久拒绝. ( android权限对话框中的小复选框“Never ask again”)

问题
我找不到正确的检测方法,只允许一次拒绝许可或者上次检查“永不再问”复选框并永久拒绝许可.
请记住,我不想知道在onRequestPermissionsResult回调中.如果当前授予,拒绝或永久拒绝许可,我需要在onCreate of my Activity中知道.

我尝试了什么
ActivityCompat#shouldShowRequestPermissionRationale似乎检测到过去是否拒绝了权限.如果仅被拒绝一次而不是永久性,它也会返回true.

PermissionChecker#checkPermission()似乎没有注意到永久和只有一次拒绝权限状态之间的任何区别.


是否有任何方法可以检测,是否仍然可以请求许可,或者是否被永久拒绝?

最佳答案

Is there any way of detecting, whether a permission is denied but can
still be requested or if it is permanently denied?

遗憾的是,当用户选择“Never ask again”时,没有官方API可用于检测是否永久拒绝了权限

有一个工作使用shouldShowRequestPermissionRationale.创建一个SharedPreference,其默认值为false,并由shouldShowRequestPermissionRationale返回存储值.在更新值之前,请检查值集是否为true.如果是真的那么就不要更新它.

无论何时想要检查权限,都要从SharedPreference获取值,并从shouldShowRequestPermissionRationale返回当前值.如果shouldShowRequestPermissionRationale返回false但来自SharedPreference的值为true,则可以推断出用户已选择Never never again.

你可以参考我描述这种方法的blog.

点击查看更多相关文章

转载注明原文:android – 检测是否可以请求或永久拒绝权限 - 乐贴网