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;
}
return false;
}
- private boolean isValidPackageComponent(PackageManager pm, ComponentName cn) {
+
+ public static boolean isValidPackageComponent(PackageManager pm, ComponentName cn) {
if (cn == null) {
return false;
}
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());
+ 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);
}
}
}
}
}
}
-}
+}
\ No newline at end of file