Bas*_*sti 5 permissions android android-permissions
情况
我的一个片段访问相机.所以当然我需要首先检查我的活动中的权限,然后再重定向到它.如果用户拒绝该权限,则活动完成并将其重定向到他所在的上一个活动.
此外,我想在活动开始时显示不同的片段,并检测到该权限被永久拒绝.(android权限对话框中的小复选框"Never ask again")
问题
我无法找到正确的检测方法,只有一次拒绝许可或者上次检查"永不再问"复选框并永久拒绝许可.
请记住,我不想知道在onRequestPermissionsResult回调中.如果当前授予,拒绝或永久拒绝许可,我需要在onCreate of my Activity中知道.
我试过的
ActivityCompat#shouldShowRequestPermissionRationale似乎是检测到过去是否拒绝了许可.如果仅被拒绝一次而不是永久性,它也会返回true.
PermissionChecker#checkPermission() 似乎没有注意到永久和只有一次拒绝许可状态之间的任何区别.
问题
是否有任何方法可以检测,是否仍然可以请求许可,或者是否被永久拒绝?
是否有任何方法可以检测,许可是否被拒绝但仍可被请求或是否被永久拒绝?
遗憾的是,当用户选择" Never ask again " 时,没有官方API可用于检测是否永久拒绝权限
有一个工作围绕着哪些用途shouldShowRequestPermissionRationale.创建一个SharedPreference,其中包含默认值false和返回的存储值shouldShowRequestPermissionRationale.在更新值之前,请检查值是否为true.如果是,true那么不要更新它.
每当您想要检查权限时,请从中SharedPreference返回值和返回的当前值shouldShowRequestPermissionRationale.如果 shouldShowRequestPermissionRationale返回false但值为SharedPreferenceis true,则可以推断出Never ask again用户选择的值.
您可以参考我描述此方法的博客.
shouldShowRequestPermissionRationale根据先前权限请求中的用户首选项返回 true 或 false。
如果用户刚刚拒绝许可(不是永远)shouldShowRequestPermissionRationale将返回true。如果永远拒绝许可,则返回false。诀窍在于,即使用户允许权限 thenshouldShowRequestPermissionRationale也会返回false。
因此,我们可以结合这两个条件来决定是否选择“不再询问”。
因此,如果用户未获得许可并shouldShowRequestPermissionRationale返回false,则意味着用户选择不再请求许可。
| 归档时间: |
|
| 查看次数: |
1000 次 |
| 最近记录: |