summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/LauncherProvider.java
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2014-01-15 15:18:08 -0800
committerAdam Cohen <adamcohen@google.com>2014-01-15 23:32:46 +0000
commit556f6135f992dcd5bfbfffe0172627bfbf57d24e (patch)
tree0a2242798f91402a0f22dbe2a3b176a79e76fbc1 /src/com/android/launcher3/LauncherProvider.java
parent230cbf831cbbe8aaa6eaff976f755a8adf5e1708 (diff)
downloadandroid_packages_apps_Trebuchet-556f6135f992dcd5bfbfffe0172627bfbf57d24e.tar.gz
android_packages_apps_Trebuchet-556f6135f992dcd5bfbfffe0172627bfbf57d24e.tar.bz2
android_packages_apps_Trebuchet-556f6135f992dcd5bfbfffe0172627bfbf57d24e.zip
Don't migrate shortcuts for components that no longer exist
Bug 12570791 Change-Id: Ie4b55afcee0c4d1d16acf7b830d7885800943454
Diffstat (limited to 'src/com/android/launcher3/LauncherProvider.java')
-rw-r--r--src/com/android/launcher3/LauncherProvider.java48
1 files changed, 30 insertions, 18 deletions
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java
index 5676a9adb..d4ce322c8 100644
--- a/src/com/android/launcher3/LauncherProvider.java
+++ b/src/com/android/launcher3/LauncherProvider.java
@@ -1516,6 +1516,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());
@@ -1538,29 +1539,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);
}
}
}
@@ -1712,4 +1724,4 @@ public class LauncherProvider extends ContentProvider {
}
}
}
-}
+} \ No newline at end of file