From e99acb29db6ae9654be17e94bcc28b7e837784ed Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Thu, 4 Aug 2016 12:55:48 -0700 Subject: Fixes a bug where setting a null bigLargeIcon would not clear it Because we were also looking for legacy icons and the legacy icon was always restored for old listeners, the icon would not disappear. Change-Id: Id911d405e5ae00bf45e34368effbf67c2425a40c Fixes: 30663590 --- core/java/android/app/Notification.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 4802b29bdeec..6e01922d20bf 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -4424,9 +4424,15 @@ public class Notification implements Parcelable // mN.mLargeIcon // 2. !mBigLargeIconSet -> mN.mLargeIcon applies Icon oldLargeIcon = null; + Bitmap largeIconLegacy = null; if (mBigLargeIconSet) { oldLargeIcon = mBuilder.mN.mLargeIcon; mBuilder.mN.mLargeIcon = mBigLargeIcon; + // The legacy largeIcon might not allow us to clear the image, as it's taken in + // replacement if the other one is null. Because we're restoring these legacy icons + // for old listeners, this is in general non-null. + largeIconLegacy = mBuilder.mN.largeIcon; + mBuilder.mN.largeIcon = null; } RemoteViews contentView = getStandardView(mBuilder.getBigPictureLayoutResource()); @@ -4438,6 +4444,7 @@ public class Notification implements Parcelable if (mBigLargeIconSet) { mBuilder.mN.mLargeIcon = oldLargeIcon; + mBuilder.mN.largeIcon = largeIconLegacy; } contentView.setImageViewBitmap(R.id.big_picture, mPicture); -- cgit v1.2.3-59-g8ed1b