我已经浏览了本指南以了解 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);
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我收到一个错误cannot find symbol variable POST_NOTIFICATIONS。
推送通知的正确清单权限是什么?
小智 13
您需要执行几个步骤,在清单中添加发布通知权限
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
Run Code Online (Sandbox Code Playgroud)
然后在你的控制器中,对于运行时权限,就像我们通常要求的那样:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后需要照常处理权限结果
小智 11
也许我参加聚会有点晚了,我知道......但我希望这至少可以帮助其他人。您需要在模块级别的 gradle 文件中使用compileSdkVersion 33 。然后您将可以毫无问题地使用 POST_NOTIFICATIONS 权限。

如何在 android studio 中添加通知权限的运行时权限,\n面向 Android 13 的应用现在需要在发布通知之前向用户请求通知权限,\xe2\x80\x9d\n行为更改:面向 Android 13 或更高版本的应用\n https://developer.android.com/about/versions/13/behavior-changes-13
\n添加清单:uses-permission android: name="android.permission.POST_NOTIFICATIONS
\n\n和
\n在MainActivity的onCreate后添加:
\nif (ContextCompat.checkSelfPermission(this, POST_NOTIFICATIONS) == PackageManager.PERMISSION_DENIED) {\n ActivityCompat.requestPermissions(this, new String[]{POST_NOTIFICATIONS}, 1);\n }Run Code Online (Sandbox Code Playgroud)\n