summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2014-01-16 11:20:19 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2014-01-16 11:20:19 -0800
commit2760274df32e935bc148dc63c0f0abdd2dc8ce47 (patch)
tree58fcdd54fbb239bfed734a9350e69d169f0cf56a /src/com/android
parentaa5113a446ffc8196b45bee9c7181842c477375c (diff)
parent556f6135f992dcd5bfbfffe0172627bfbf57d24e (diff)
downloadandroid_packages_apps_Trebuchet-2760274df32e935bc148dc63c0f0abdd2dc8ce47.tar.gz
android_packages_apps_Trebuchet-2760274df32e935bc148dc63c0f0abdd2dc8ce47.tar.bz2
android_packages_apps_Trebuchet-2760274df32e935bc148dc63c0f0abdd2dc8ce47.zip
am 556f6135: Don\'t migrate shortcuts for components that no longer exist
* commit '556f6135f992dcd5bfbfffe0172627bfbf57d24e': Don't migrate shortcuts for components that no longer exist
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/launcher3/LauncherModel.java5
-rw-r--r--src/com/android/launcher3/LauncherProvider.java48
2 files changed, 33 insertions, 20 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 4478e9bbd..2102a1fac 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -2709,7 +2709,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;
@@ -2718,7 +2718,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 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