diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java index 80928d6da9788..451bd42bd053d 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java @@ -16,10 +16,12 @@ package com.android.systemui.media.dialog; +import android.app.Notification; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; +import android.graphics.drawable.Icon; import android.media.MediaMetadata; import android.media.MediaRoute2Info; import android.media.RoutingSessionInfo; @@ -221,9 +223,14 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback { } for (NotificationEntry entry : mNotificationEntryManager.getActiveNotificationsForCurrentUser()) { - if (entry.getSbn().getNotification().hasMediaSession() + final Notification notification = entry.getSbn().getNotification(); + if (notification.hasMediaSession() && TextUtils.equals(entry.getSbn().getPackageName(), mPackageName)) { - return IconCompat.createFromIcon(entry.getSbn().getNotification().getLargeIcon()); + final Icon icon = notification.getLargeIcon(); + if (icon == null) { + break; + } + return IconCompat.createFromIcon(icon); } } return null; diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java index 6ceac131ed4b3..0d352c1b42d90 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java @@ -446,6 +446,25 @@ public class MediaOutputControllerTest extends SysuiTestCase { assertThat(mMediaOutputController.getNotificationIcon()).isNull(); } + @Test + public void getNotificationLargeIcon_withoutLargeIcon_returnsNull() { + final List entryList = new ArrayList<>(); + final NotificationEntry entry = mock(NotificationEntry.class); + final StatusBarNotification sbn = mock(StatusBarNotification.class); + final Notification notification = mock(Notification.class); + entryList.add(entry); + + when(mNotificationEntryManager.getActiveNotificationsForCurrentUser()) + .thenReturn(entryList); + when(entry.getSbn()).thenReturn(sbn); + when(sbn.getNotification()).thenReturn(notification); + when(sbn.getPackageName()).thenReturn(TEST_PACKAGE_NAME); + when(notification.hasMediaSession()).thenReturn(true); + when(notification.getLargeIcon()).thenReturn(null); + + assertThat(mMediaOutputController.getNotificationIcon()).isNull(); + } + @Test public void getNotificationLargeIcon_withPackageNameAndMediaSession_returnsIconCompat() { final List entryList = new ArrayList<>();