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
This commit is contained in:
sheenachhabra 2024-01-23 09:44:15 -08:00 committed by Copybara-Service
parent 4c1581a175
commit b98e5ac0d4
2 changed files with 13 additions and 1 deletions

View File

@ -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( private void updateNotificationInternal(
MediaSession session, MediaSession session,
MediaNotification mediaNotification, MediaNotification mediaNotification,

View File

@ -36,6 +36,7 @@ import static androidx.media3.common.util.Assertions.checkArgument;
import static androidx.media3.common.util.Assertions.checkState; import static androidx.media3.common.util.Assertions.checkState;
import static java.lang.annotation.ElementType.TYPE_USE; import static java.lang.annotation.ElementType.TYPE_USE;
import android.annotation.SuppressLint;
import android.app.Notification; import android.app.Notification;
import android.app.NotificationChannel; import android.app.NotificationChannel;
import android.app.PendingIntent; import android.app.PendingIntent;
@ -165,12 +166,16 @@ import java.util.Map;
* <li><b>{@code exo_notification_stop}</b> - The stop icon. * <li><b>{@code exo_notification_stop}</b> - The stop icon.
* </ul> * </ul>
* *
* <p>Alternatively, the action icons can be set programatically by using the {@link Builder}. * <p>Alternatively, the action icons can be set programmatically by using the {@link Builder}.
* *
* <p>Unlike the drawables above, the large icon (i.e. the icon passed to {@link * <p>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 * NotificationCompat.Builder#setLargeIcon(Bitmap)} cannot be overridden in this way. Instead, the
* large icon is obtained from the {@link MediaDescriptionAdapter} passed to {@link * large icon is obtained from the {@link MediaDescriptionAdapter} passed to {@link
* Builder#Builder(Context, int, String, MediaDescriptionAdapter)}. * Builder#Builder(Context, int, String, MediaDescriptionAdapter)}.
*
* <p>Note: This class would require {@link android.Manifest.permission#POST_NOTIFICATIONS}
* permission if used without a {@linkplain #setMediaSessionToken(MediaSessionCompat.Token) media
* session}.
*/ */
@UnstableApi @UnstableApi
public class PlayerNotificationManager { 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) { private void startOrUpdateNotification(Player player, @Nullable Bitmap bitmap) {
boolean ongoing = getOngoing(player); boolean ongoing = getOngoing(player);
builder = createNotification(player, builder, ongoing, bitmap); builder = createNotification(player, builder, ongoing, bitmap);