am 556f6135: Don\'t migrate shortcuts for components that no longer exist

* commit '556f6135f992dcd5bfbfffe0172627bfbf57d24e':
  Don't migrate shortcuts for components that no longer exist
This commit is contained in:
Adam Cohen
2014-01-16 11:20:19 -08:00
committed by Android Git Automerger
2 changed files with 33 additions and 20 deletions
+3 -2
View File
@@ -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;
}
+30 -18
View File
@@ -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 {
}
}
}
}
}