情况
我的一个片段访问相机.所以当然我需要首先检查我的活动中的权限,然后再重定向到它.如果用户拒绝该权限,则该活动完成并将其重定向到他所在的上一个活动.
此外,我想在活动开始时显示一个不同的片段,并检测到该权限被永久拒绝. (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 – 检测是否可以请求或永久拒绝权限所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)