diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 219fa3ca52707..da9c78530c63b 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -22005,7 +22005,7 @@ public class PackageManagerService extends IPackageManager.Stub pir.addFilter(new PreferredActivity(filter, match, set, activity, always)); scheduleWritePackageRestrictionsLocked(userId); } - if (!updateDefaultHomeNotLocked(userId)) { + if (!(isHomeFilter(filter) && updateDefaultHomeNotLocked(userId))) { postPreferredActivityChangedBroadcast(userId); } } @@ -22295,7 +22295,9 @@ public class PackageManagerService extends IPackageManager.Stub new PersistentPreferredActivity(filter, activity, true)); scheduleWritePackageRestrictionsLocked(userId); } - updateDefaultHomeNotLocked(userId); + if (isHomeFilter(filter)) { + updateDefaultHomeNotLocked(userId); + } postPreferredActivityChangedBroadcast(userId); } @@ -22664,6 +22666,11 @@ public class PackageManagerService extends IPackageManager.Stub return filter; } + private boolean isHomeFilter(@NonNull IntentFilter filter) { + return filter.hasAction(Intent.ACTION_MAIN) && filter.hasCategory(Intent.CATEGORY_HOME) + && filter.hasCategory(CATEGORY_DEFAULT); + } + ComponentName getHomeActivitiesAsUser(List allHomeCandidates, int userId) { return liveComputer().getHomeActivitiesAsUser(allHomeCandidates,