gpt4 book ai didi

Android Marshmallow - 如何知道之前检查过 "Never ask again"

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:26 24 4
gpt4 key购买 nike

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

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

是否有正确的方法来知道“不再询问”以获得许可?

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

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

所以我将权限请求用作名为 在 onResume() 中调用的 requestLocation()。

在 requestLocation() 内部

-> 检查权限

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

-> ELSE : 未被授予,用两个按钮显示授予权限的对话框

-> 一键执行代码“ActivityCompat.requestPermissions(.........);”并显示内置弹出窗口以获得许可。

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

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

但是如果勾选了“Never show again”,点击了deny,就会继续死循环,如下图

onRequestPermissionsResult()=>

PERMISSION_DENIED =>

requestLocation()=>

未授予权限=>

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

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

未授予权限=>

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

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

因此,如果我能理解“不再显示”是否被点击,我可以通过在 requestLocation() 中检查它来退出循环。

最佳答案

如果:

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

然后用户勾选了“不再询问”。

关于Android Marshmallow - 如何知道之前检查过 "Never ask again",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35184665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com