POST_NOTIFICATIONS 权限对话框未显示(Android 13,targetSdkVersion = 33)

问题描述 投票:0回答:1

我知道,关于这个话题已经有很多问题了。但是,到目前为止,我找到的所有答案都无法为我解决问题。

问题是 ActivityCompat.requestPermissions 不会触发弹出窗口,要求用户授予通知权限。

设置:

  • 在物理设备上测试(Android 13、三星 Galaxy S22 和三星 Galaxy A51)
  • targetSdkVersion = 33
  • compileSdkVersion = 33
  • minSdkVersion = 23
  • AndroidManifest 有权限:
    <uses-permission
    android:name="android.permission.POST_NOTIFICATIONS"/>

AndroidManifest 中声明的 Activity

        <activity android:name=".PostNotificationActivity"
            android:exported="true"
            android:screenOrientation="portrait"/>

点击启用通知按钮:

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.POST_NOTIFICATIONS)) {
                ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.POST_NOTIFICATIONS),
                    POST_NOTIFICATION_PERMISSION_CODE)

            } else {
                ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.POST_NOTIFICATIONS),
                    POST_NOTIFICATION_PERMISSION_CODE)
            }
        }

回调是这样的:

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)

        when(requestCode) {
            POST_NOTIFICATION_PERMISSION_CODE -> {
                if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(applicationContext, "Permission Granted", Toast.LENGTH_LONG).show()

                } else {
                    Toast.makeText(applicationContext, "Permission Denied", Toast.LENGTH_LONG).show()
                }

                return
            }
        }
    }

我已经通过调试器逐步执行代码,并且可以确认在第一次单击按钮时调用了 requestPermissions 但设备上没有弹出窗口并且 onRequestPermissionsResult 也没有触发。 当再次单击按钮requestPermissions时,设备上没有弹出窗口被调用,但onRequestPermissionsResult现在被Permission Denied触发,当按下返回时,先前的活动被冻结。

我也尝试过使用新的 ActivityResultLauncher,但行为是相同的,没有在设备上弹出。

java android kotlin android-permissions android-13
1个回答
0
投票

我遇到了类似的问题,忘记更新我的 gradle 构建文件以将目标 SDK 设置为 33。更新目标 SDK 为我解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.