Use default icon if notification icon is null.
This could happen, for instance, if there is a
ResourcesNotFoundException when loading the icon.
Bug: 36134256
Change-Id: If2d13207252a2ec46f581455f5709a95d68f29c1
diff --git a/src/com/android/launcher3/notification/NotificationInfo.java b/src/com/android/launcher3/notification/NotificationInfo.java
index 77a18c7..58e2e03 100644
--- a/src/com/android/launcher3/notification/NotificationInfo.java
+++ b/src/com/android/launcher3/notification/NotificationInfo.java
@@ -20,6 +20,7 @@
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
+import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.os.Bundle;
@@ -27,6 +28,7 @@
import android.view.View;
import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherAppState;
import com.android.launcher3.graphics.IconPalette;
import com.android.launcher3.popup.PopupContainerWithArrow;
import com.android.launcher3.util.PackageUserKey;
@@ -53,8 +55,8 @@
public final boolean autoCancel;
public final boolean dismissable;
- private final int mBadgeIcon;
- private final Drawable mIconDrawable;
+ private int mBadgeIcon;
+ private Drawable mIconDrawable;
private int mIconColor;
private boolean mIsIconLarge;
@@ -82,6 +84,12 @@
mIconDrawable = icon.loadDrawable(context);
mIsIconLarge = true;
}
+ if (mIconDrawable == null) {
+ mIconDrawable = new BitmapDrawable(context.getResources(), LauncherAppState
+ .getInstance(context).getIconCache()
+ .getDefaultIcon(statusBarNotification.getUser()));
+ mBadgeIcon = BADGE_ICON_NONE;
+ }
intent = notification.contentIntent;
autoCancel = (notification.flags & Notification.FLAG_AUTO_CANCEL) != 0;
dismissable = (notification.flags & Notification.FLAG_ONGOING_EVENT) == 0;