summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2014-01-15 15:18:08 -0800
committerDanesh M <daneshm90@gmail.com>2014-06-06 22:54:26 -0700
commit00612cac2ed50f30095c9f16a998edb456e39cb1 (patch)
tree443cd9a04cfe47d8f230b878d24e8aca401d19bb
parent082b0f24472cb056a237ba3cad25f2eb9cf0bd4b (diff)
downloadandroid_packages_apps_Trebuchet-00612cac2ed50f30095c9f16a998edb456e39cb1.tar.gz
android_packages_apps_Trebuchet-00612cac2ed50f30095c9f16a998edb456e39cb1.tar.bz2
android_packages_apps_Trebuchet-00612cac2ed50f30095c9f16a998edb456e39cb1.zip
Don't migrate shortcuts for components that no longer exist
Bug 12570791 Change-Id: Ie4b55afcee0c4d1d16acf7b830d7885800943454
-rw-r--r--src/com/android/launcher3/LauncherModel.java5
-rw-r--r--src/com/android/launcher3/LauncherProvider.java46
2 files changed, 32 insertions, 19 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 46ee0a326..481ce9f1d 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -2854,7 +2854,7 @@ public class LauncherModel extends BroadcastReceiver {
return widgetsAndShortcuts;
}
- private boolean isPackageDisabled(PackageManager pm, String packageName) {
+ private static boolean isPackageDisabled(PackageManager pm, String packageName) {
try {
PackageInfo pi = pm.getPackageInfo(packageName, 0);
return !pi.applicationInfo.enabled;
@@ -2863,7 +2863,8 @@ public class LauncherModel extends BroadcastReceiver {
}
return false;
}
- private boolean isValidPackageComponent(PackageManager pm, ComponentName cn) {
+
+ public static boolean isValidPackageComponent(PackageManager pm, ComponentName cn) {
if (cn == null) {
return false;
}
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java
index e689b2e4c..2fe8b015f 100644
--- a/src/com/android/launcher3/LauncherProvider.java
+++ b/src/com/android/launcher3/LauncherProvider.java
@@ -1625,6 +1625,7 @@ public class LauncherProvider extends ContentProvider {
final int width = (int) grid.numColumns;
final int height = (int) grid.numRows;
final int hotseatWidth = (int) grid.numHotseatIcons;
+ PackageManager pm = mContext.getPackageManager();
final HashSet<String> seenIntents = new HashSet<String>(c.getCount());
@@ -1647,29 +1648,40 @@ public class LauncherProvider extends ContentProvider {
+ c.getString(titleIndex) + "\": " + intentStr, true);
if (itemType != Favorites.ITEM_TYPE_FOLDER) {
+
+ final Intent intent;
+ final ComponentName cn;
+ try {
+ intent = Intent.parseUri(intentStr, 0);
+ } catch (URISyntaxException e) {
+ // bogus intent?
+ Launcher.addDumpLog(TAG,
+ "skipping invalid intent uri", true);
+ continue;
+ }
+
+ cn = intent.getComponent();
+
if (TextUtils.isEmpty(intentStr)) {
// no intent? no icon
Launcher.addDumpLog(TAG, "skipping empty intent", true);
continue;
+ } else if (!LauncherModel.isValidPackageComponent(pm, cn)) {
+ // component no longer exists.
+ Launcher.addDumpLog(TAG, "skipping item whose component" +
+ "no longer exists.", true);
+ continue;
} else {
- try {
- // Canonicalize
- final Intent intent = Intent.parseUri(intentStr, 0);
- // the Play Store sets the package parameter, but Launcher
- // does not, so we clear that out to keep them the same
- intent.setPackage(null);
- final String key = intent.toUri(0);
- if (seenIntents.contains(key)) {
- Launcher.addDumpLog(TAG, "skipping duplicate", true);
- continue;
- } else {
- seenIntents.add(key);
- }
- } catch (URISyntaxException e) {
- // bogus intent?
- Launcher.addDumpLog(TAG,
- "skipping invalid intent uri", true);
+ // Canonicalize
+ // the Play Store sets the package parameter, but Launcher
+ // does not, so we clear that out to keep them the same
+ intent.setPackage(null);
+ final String key = intent.toUri(0);
+ if (seenIntents.contains(key)) {
+ Launcher.addDumpLog(TAG, "skipping duplicate", true);
continue;
+ } else {
+ seenIntents.add(key);
}
}
}