From 426dd77ac0c04e4c7ad0045ea2d58304aae32ec1 Mon Sep 17 00:00:00 2001 From: sheenachhabra Date: Tue, 23 Jan 2024 09:44:15 -0800 Subject: [PATCH] Suppress lint warning about missing POST_NOTIFICATIONS permission For media session related notifications, permission is not required. https://developer.android.com/develop/ui/views/notifications/notification-permission#exemptions-media-sessions #minor-release PiperOrigin-RevId: 600819251 (cherry picked from commit b98e5ac0d468770ef1a60fa853ff1463d2fffe93) --- .../media3/session/MediaNotificationManager.java | 3 +++ .../androidx/media3/ui/PlayerNotificationManager.java | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java b/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java index 98a5833776..f8f79e4de4 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java @@ -203,6 +203,9 @@ import java.util.concurrent.TimeoutException; } } + // POST_NOTIFICATIONS permission is not required for media session related notifications. + // https://developer.android.com/develop/ui/views/notifications/notification-permission#exemptions-media-sessions + @SuppressLint("MissingPermission") private void updateNotificationInternal( MediaSession session, MediaNotification mediaNotification, diff --git a/libraries/ui/src/main/java/androidx/media3/ui/PlayerNotificationManager.java b/libraries/ui/src/main/java/androidx/media3/ui/PlayerNotificationManager.java index 973320e280..6821b54480 100644 --- a/libraries/ui/src/main/java/androidx/media3/ui/PlayerNotificationManager.java +++ b/libraries/ui/src/main/java/androidx/media3/ui/PlayerNotificationManager.java @@ -36,6 +36,7 @@ import static androidx.media3.common.util.Assertions.checkArgument; import static androidx.media3.common.util.Assertions.checkState; import static java.lang.annotation.ElementType.TYPE_USE; +import android.annotation.SuppressLint; import android.app.Notification; import android.app.NotificationChannel; import android.app.PendingIntent; @@ -165,12 +166,16 @@ import java.util.Map; *
  • {@code exo_notification_stop} - The stop icon. * * - *

    Alternatively, the action icons can be set programatically by using the {@link Builder}. + *

    Alternatively, the action icons can be set programmatically by using the {@link Builder}. * *

    Unlike the drawables above, the large icon (i.e. the icon passed to {@link * NotificationCompat.Builder#setLargeIcon(Bitmap)} cannot be overridden in this way. Instead, the * large icon is obtained from the {@link MediaDescriptionAdapter} passed to {@link * Builder#Builder(Context, int, String, MediaDescriptionAdapter)}. + * + *

    Note: This class would require {@link android.Manifest.permission#POST_NOTIFICATIONS} + * permission if used without a {@linkplain #setMediaSessionToken(MediaSessionCompat.Token) media + * session}. */ @UnstableApi public class PlayerNotificationManager { @@ -1184,6 +1189,10 @@ public class PlayerNotificationManager { } } + // This class is generally used with a media session which does not require notification + // permission. + // https://developer.android.com/develop/ui/views/notifications/notification-permission#exemptions-media-sessions + @SuppressLint("MissingPermission") private void startOrUpdateNotification(Player player, @Nullable Bitmap bitmap) { boolean ongoing = getOngoing(player); builder = createNotification(player, builder, ongoing, bitmap);