Android Marshmallow - 如何知道“永不再问”再次检查

时间:2016-02-03 18:19:58

标签: android android-6.0-marshmallow android-permissions

我想请求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()中检查它来退出循环。

4 个答案:

答案 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在运行时简化了请求权限。