Don't migrate shortcuts for components that no longer exist
Bug 12570791 Change-Id: Ie4b55afcee0c4d1d16acf7b830d7885800943454
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user