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

Vin*_*ran 4 android android-permissions android-6.0-marshmallow

我想请求权限android.permission.ACCESS_COARSE_LOCATION获取塔位置.

但在请求该权限之前,我想知道用户是否通过选中"永不再询问"复选框来阻止它.

是否有正确的方法来了解"永不再问"权限?

=======================要求==========================

我想阻止用户在不授予位置访问权限的情况下进入屏幕.

所以我使用权限请求作为名为requestLocation()的函数,该函数在onResume()中调用.

里面的requestLocation()

- >检查是否允许

- >如果:已授予权限,则注册更新位置.

- > ELSE:未授权,用两个按钮显示授权许可对话

- >一个按钮执行代码"ActivityCompat.requestPermissions(..........);" 并显示内置弹出窗口以获得许可.

- >另一个按钮有助于退出应用程序.

当在onRequestPermissionsResult()中标记deny或grant时,将再次执行requestLocation().

但是,如果选中"Never again again"并单击deny,则无限循环将继续如下所示

onRequestPermissionsResult()=>

PERMISSION_DENIED =>

requestLocation()=>

权限未授予=>

ActivityCompat.requestPermissions(..........); =>

onRequestPermissionsResult()=> PERMISSION_DENIED => requestLocation()=>

权限未授予=>

ActivityCompat.requestPermissions(..........);

=> ...............

因此,如果我能够理解是否单击"再次显示",我可以通过在requestLocation()中检查它来退出循环.

Com*_*are 7

如果:

  • 您之前已经请求了许可,并且
  • 您没有权限(checkSelfPermission()表示被拒绝),以及
  • shouldShowRequestPermissionRationale() 回报 false

然后用户检查了"永不再问".