OSDN Git Service

Fixes a bug where setting a null bigLargeIcon would not clear it
authorSelim Cinek <cinek@google.com>
Thu, 4 Aug 2016 19:55:48 +0000 (12:55 -0700)
committerSelim Cinek <cinek@google.com>
Thu, 4 Aug 2016 20:04:29 +0000 (13:04 -0700)
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

index 4802b29..6e01922 100644 (file)
@@ -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);