gpt4 book ai didi

android - 未为 RequestMultiplePermissions 调用 ActivityResultCallback

转载 作者:行者123 更新时间:2023-12-02 13:28:40 25 4
gpt4 key购买 nike

我关注了这个tutorial通过 RequestMultiplePermissions 合约实现一种通过 Results API 请求应用程序权限的新方法。尽管显示了权限对话框并且权限结果通过系统传播到应用程序首选项等,但我提供的 ActivityResultCallback 根本没有收到通知。

这是我的源代码。我知道我没有检查用户是否已经拒绝了权限:

private fun checkPermissions() {
val permissionList = arrayOf(
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_FINE_LOCATION
)

val notGrantedPermissions = permissionList.map {
Pair(
it, ContextCompat.checkSelfPermission(
applicationContext,
it
)
)
}.filter {
it.second != PackageManager.PERMISSION_GRANTED
}
.map { it.first }
.toTypedArray()

if (notGrantedPermissions.isEmpty()) {
nextActivity()
} else {
requestPermissionLauncher.launch(notGrantedPermissions)
}
}

private val requestPermissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()
) { result ->
info("> requestPermissionLauncher - ${result.values}")
if (result.values.all { it }) {
nextActivity()
} else {
longToast("All permissions are required for app to work correctly")
checkPermissions()
}
}

我是否遗漏了文档中的任何内容?

  • 库版本:androidx.activity:activity-ktx:1.2.0-alpha06
  • MinSdkVersion:21
  • TargetSdkVersion:29

最佳答案

今晚我遇到了同样的问题。我打赌你要么扩展 AppCompatActivity 或类似的东西。问题是,当 super.onRequestPermissionsResult 被调用时,它会落到 FragmentActivity 实现上,它本身不会调用 super 方法,因此链会死在那里。快速的解决方案是直接扩展 ComponentActivity。但是,如果这对您的解决方案不可行,您可以重写该方法,如下所示:

override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
activityResultRegistry.dispatchResult(requestCode, Activity.RESULT_OK, Intent()
.putExtra(EXTRA_PERMISSIONS, permissions)
.putExtra(EXTRA_PERMISSION_GRANT_RESULTS, grantResults))
}

以上是 ComponentActivity 方法的直接端口。

关于android - 未为 RequestMultiplePermissions 调用 ActivityResultCallback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62673703/

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