我想请求android.permission.ACCESS_COARSE_LOCATION权限以获取塔位置。
但是在请求该权限之前,我想知道用户是否通过选中“永不再问”复选框来阻止它。
是否有正确的方法知道“永不再问”权限?
=======================要求======================= ===
我想阻止用户在未授予位置访问权限的情况下进入屏幕。
所以我使用权限请求作为名为的函数 requestRocation()在onResume()中调用。
请求内部位置()
- >检查权限
- >如果:已授予权限,请注册更新位置。
- > ELSE:未授予,使用两个按钮显示授予权限的对话
- >一个按钮执行代码“ActivityCompat.requestPermissions(..........);”并显示内置的弹出权限。
- >另一个按钮有助于退出应用程序。
当在onRequestPermissionsResult()中标记deny或grant时,requestLocation()将再次执行。
但是如果选中“Never again again”并单击deny,则无限循环将继续如下所示
onRequestPermissionsResult()=>
PERMISSION_DENIED =>
requestLocation()=>
未授予权限=>
ActivityCompat.requestPermissions(..........); =>
onRequestPermissionsResult()=> PERMISSION_DENIED => requestLocation()=>
未授予权限=>
ActivityCompat.requestPermissions(..........);
=> ...............
因此,如果我能理解是否单击“从不再显示”,我可以通过在requestLocation()中检查它来退出循环。
答案 0 :(得分:7)
如果:
checkSelfPermission()
表示已被拒绝)和shouldShowRequestPermissionRationale()
返回false
然后用户检查了#34;再也没有问过"。
答案 1 :(得分:1)
您不需要知道用户是否选中了该复选框。系统将处理它,就好像用户每次都拒绝你一样。
请求许可。如果用户选中了“#34;再也不会再问”,那么从应用程序的角度来看,它不应该有所不同。如果他们每次都拒绝你,那么他们就是这样。
http://developer.android.com/training/permissions/requesting.html
答案 2 :(得分:0)
但是在请求获得该许可之前,我想知道用户是否通过检查"从不再问及#34;复选框。
我认为你不能,但坦率地说,我没有理由你需要关心的原因。如果您的流程正确无误,那么用户拒绝您的请求就无关紧要了。
答案 3 :(得分:-1)
我对Dexter library有很好的经验,Dexter在运行时简化了请求权限。