obsidian/笔记文件/2.笔记/POST_NOTIFICATIONS提示在Manifest.permission中不存在.md
2025-03-26 00:02:56 +08:00

1.3 KiB
Raw Blame History

#安卓

在 Android 13TiramisuPOST_NOTIFICATIONS 权限被引入,用于控制应用发送通知的权限。然而,它与其他权限有所不同:它不是在 AndroidManifest.xml 中声明的,而是通过运行时请求。

在 Android 13 之前,应用可以直接在后台发送通知,用户无需单独授权;但 Android 13 开始对这一权限进行限制,要求用户在应用运行时授予 POST_NOTIFICATIONS 权限。

如何在 Android 13 中请求 POST_NOTIFICATIONS 权限

  1. 检查系统版本:在代码中检查系统是否为 Android 13 或更高版本。
  2. 请求权限:在应用启动或需要发送通知时,使用 ActivityCompat.requestPermissions 请求该权限。

示例代码

    public int areNotificationsEnabled() {
        boolean permissionGranted = true;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
            permissionGranted = mContext.checkCallingOrSelfPermission(Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED;
        boolean notificationsEnabled = getNotificationManager().areNotificationsEnabled();
        if (permissionGranted)
            return notificationsEnabled ? PERMISSION_STATUS_ALLOWED : PERMISSION_STATUS_NOTIFICATIONS_BLOCKED_FOR_APP;
        return PERMISSION_STATUS_DENIED;
    }