DO NOT MERGE - Fix 2941495: Launcher short-cut icons don't work for apps on SD card after reboot
Bug: 2941495
Change-Id: Idf1869d33cd5c01abea5b059ca466529cee0ad93
diff --git a/src/com/android/launcher2/IconCache.java b/src/com/android/launcher2/IconCache.java
index 4bb7d08..81a786c 100644
--- a/src/com/android/launcher2/IconCache.java
+++ b/src/com/android/launcher2/IconCache.java
@@ -124,6 +124,10 @@
}
}
+ public boolean isDefaultIcon(Bitmap icon) {
+ return mDefaultIcon == icon;
+ }
+
private CacheEntry cacheLocked(ComponentName componentName, ResolveInfo info) {
CacheEntry entry = mCache.get(componentName);
if (entry == null) {
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index eb341f6..c1ecf50 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -1490,7 +1490,7 @@
// into the DB. We do this so when we're loading, if the
// package manager can't find an icon (for example because
// the app is on SD) then we can use that instead.
- if (info.onExternalStorage && !info.customIcon && !info.usingFallbackIcon) {
+ if (!info.customIcon && !info.usingFallbackIcon) {
boolean needSave;
byte[] data = c.getBlob(iconIndex);
try {
diff --git a/src/com/android/launcher2/ShortcutInfo.java b/src/com/android/launcher2/ShortcutInfo.java
index 5c322ba..2c5aec4 100644
--- a/src/com/android/launcher2/ShortcutInfo.java
+++ b/src/com/android/launcher2/ShortcutInfo.java
@@ -54,11 +54,6 @@
boolean usingFallbackIcon;
/**
- * Indicates whether the shortcut is on external storage and may go away at any time.
- */
- boolean onExternalStorage;
-
- /**
* If isShortcut=true and customIcon=false, this contains a reference to the
* shortcut icon as an application's resource.
*/
@@ -101,6 +96,7 @@
public Bitmap getIcon(IconCache iconCache) {
if (mIcon == null) {
mIcon = iconCache.getIcon(this.intent);
+ this.usingFallbackIcon = iconCache.isDefaultIcon(mIcon);
}
return mIcon;
}
@@ -135,7 +131,7 @@
LauncherSettings.BaseLauncherColumns.ICON_TYPE_BITMAP);
writeBitmap(values, mIcon);
} else {
- if (onExternalStorage && !usingFallbackIcon) {
+ if (!usingFallbackIcon) {
writeBitmap(values, mIcon);
}
values.put(LauncherSettings.BaseLauncherColumns.ICON_TYPE,