gpt4 book ai didi

android - 如何使用新的 ActivityResultContracts 类检查 "Never ask again"权限场景?

转载 作者:行者123 更新时间:2023-12-05 05:57:25 25 4
gpt4 key购买 nike

registerForActivityResult方法使得请求权限变得非常简单,如下所示:

registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
when {
granted -> getUserLocation()
else -> {
//permission denied
}
}
}

但是,如何检测用户是否已通过“不再询问”复选框拒绝权限或在 Android 11+ 中已永久拒绝权限?在这些情况下,我想将用户重定向到设备的“设置”屏幕吗?

最佳答案

遗憾的是,Android API 不允许我们检测用户何时通过旧 Android 版本中的“不再询问”复选框拒绝权限或在较新的 Android 版本(即 Android 11 台以上设备)。

着眼于Android 11+,以上之所以不可能,是因为Android API不允许我们区分以下两种情况:

  1. 用户从未拒绝过权限请求。
  2. 用户已两次拒绝权限请求。

在这两种情况下,shouldShowRequestPermissionRationale(permission:)方法返回 falsecheckSelfPermission(permission:)方法返回 PackageManager.PERMISSION_DENIED .

只要有点聪明,我们就可以绕过 Android API 的限制,让我们自己区分上述两种情况。看我的回答here有关如何执行此操作的示例。

关于android - 如何使用新的 ActivityResultContracts 类检查 "Never ask again"权限场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68808234/

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