簡體   English   中英

如何請求 android 13 的推送通知權限?

[英]How do I request push notification permissions for android 13?

我瀏覽了本指南,了解 android 13 條推送通知

https://developer.android.com/about/versions/13/changes/notification-permission#user-choice

我已經查看了請求權限的指南

https://developer.android.com/training/permissions/requesting#java

我已將編譯和目標更新為 api 32。

到目前為止,這是我的代碼(進行中)。 現在我只是想讓通知提示出現。

        if (Build.VERSION.SDK_INT >= 32) {
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_NOTIFICATION_POLICY) == PackageManager.PERMISSION_GRANTED)
                return;
            ActivityResultLauncher<String> launcher = registerForActivityResult(
                    new ActivityResultContracts.RequestPermission(), isGranted -> {

                    }
            );
            launcher.launch(Manifest.permission.POST_NOTIFICATIONS);
        }

我遇到的問題是出現錯誤cannot find symbol variable POST_NOTIFICATIONS

推送通知的正確清單權限是什么?

Android 13(API 級別 33)及更高版本支持從應用程序發送非豁免(包括前台服務 (FGS))通知的運行時權限:POST_NOTIFICATIONS。 此更改可幫助用戶專注於對他們最重要的通知。

參考這里

所以需要在AndroidManifest.xml中添加這個權限

<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

也許我參加聚會有點晚了,我知道......但我希望這至少可以幫助其他人。 您需要在模塊級別的 gradle 文件中使用compileSdkVersion 33 然后,您將可以毫無問題地使用 POST_NOTIFICATIONS 權限。 搖籃設置

您需要執行幾個步驟,在清單中添加發布通知權限

<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

然后在您的 controller 中獲取運行時許可,就像我們通常問的那樣:

if (Build.VERSION.SDK_INT >= 33) {
   if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
       ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.POST_NOTIFICATIONS},101);
       }
   else {
          createChannel();
        }
      }

然后需要像往常一樣處理權限結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM