Fixes #1940691. Sync packages when home receives a reinstall notification.
Home was only updating known activities. This change makes home also check for
removed activities and added activities.
diff --git a/src/com/android/launcher/LauncherModel.java b/src/com/android/launcher/LauncherModel.java
index a1398d4..591463b 100644
--- a/src/com/android/launcher/LauncherModel.java
+++ b/src/com/android/launcher/LauncherModel.java
@@ -244,6 +244,8 @@
}
}
+ if (syncLocked(launcher, packageName)) changed = true;
+
if (changed) {
adapter.sort(new ApplicationInfoComparator());
adapter.notifyDataSetChanged();
@@ -268,26 +270,33 @@
}
if (packageName != null && packageName.length() > 0) {
- final PackageManager packageManager = launcher.getPackageManager();
- final List<ResolveInfo> matches = findActivitiesForPackage(packageManager, packageName);
-
- if (matches.size() > 0) {
+ if (syncLocked(launcher, packageName)) {
final ApplicationsAdapter adapter = mApplicationsAdapter;
-
- // Find disabled activities and remove them from the adapter
- boolean removed = removeDisabledActivities(packageName, matches, adapter);
- // Find enable activities and add them to the adapter
- // Also updates existing activities with new labels/icons
- boolean added = addEnabledAndUpdateActivities(matches, adapter, launcher);
-
- if (added || removed) {
- adapter.sort(new ApplicationInfoComparator());
- adapter.notifyDataSetChanged();
- }
+ adapter.sort(new ApplicationInfoComparator());
+ adapter.notifyDataSetChanged();
}
}
}
+ private boolean syncLocked(Launcher launcher, String packageName) {
+ final PackageManager packageManager = launcher.getPackageManager();
+ final List<ResolveInfo> matches = findActivitiesForPackage(packageManager, packageName);
+
+ if (matches.size() > 0) {
+ final ApplicationsAdapter adapter = mApplicationsAdapter;
+
+ // Find disabled activities and remove them from the adapter
+ boolean removed = removeDisabledActivities(packageName, matches, adapter);
+ // Find enable activities and add them to the adapter
+ // Also updates existing activities with new labels/icons
+ boolean added = addEnabledAndUpdateActivities(matches, adapter, launcher);
+
+ return added || removed;
+ }
+
+ return false;
+ }
+
private static List<ResolveInfo> findActivitiesForPackage(PackageManager packageManager,
String packageName) {