diff --git a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java index fb183f57cac42..799ab4633b2a4 100644 --- a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java +++ b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java @@ -244,7 +244,11 @@ final class OverlayManagerServiceImpl { @NonNull Set onPackageAdded(@NonNull final String pkgName, final int userId) throws OperationFailedException { - return reconcileSettingsForPackage(pkgName, userId, 0 /* flags */); + final Set updatedTargets = new ArraySet<>(); + // Always update the overlays of newly added packages. + updatedTargets.add(new PackageAndUser(pkgName, userId)); + updatedTargets.addAll(reconcileSettingsForPackage(pkgName, userId, 0 /* flags */)); + return updatedTargets; } @NonNull @@ -282,7 +286,7 @@ final class OverlayManagerServiceImpl { private Set removeOverlaysForUser( @NonNull final Predicate condition, final int userId) { final List overlays = mSettings.removeIf( - io -> userId == io.userId && condition.test(io) ); + io -> userId == io.userId && condition.test(io)); Set targets = Collections.emptySet(); for (int i = 0, n = overlays.size(); i < n; i++) { final OverlayInfo info = overlays.get(i);