android– 检测是否可以请求或永久拒绝权限

android– 检测是否可以请求或永久拒绝权限,第1张

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

情况
我的一个片段访问相机.所以当然我需要首先检查我的活动中的权限,然后再重定向到它.如果用户拒绝该权限,则该活动完成并将其重定向到他所在的上一个活动.
此外,我想在活动开始时显示一个不同的片段,并检测到该权限被永久拒绝. (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 – 检测是否可以请求或永久拒绝权限全部内容,希望文章能够帮你解决android – 检测是否可以请求或永久拒绝权限所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1108934.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存