diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index be06ec08eb55f..e798b0fc0224d 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -7577,6 +7577,8 @@ public class PackageManagerService extends IPackageManager.Stub } mExpectingBetter.clear(); + mSettings.pruneRenamedPackagesLPw(); + // Resolve the storage manager. mStorageManagerPackage = getStorageManagerPackageName(); @@ -21867,6 +21869,8 @@ public class PackageManagerService extends IPackageManager.Stub } clearPackagePreferredActivitiesLPw( deletedPs.name, changedUsers, UserHandle.USER_ALL); + + mSettings.removeRenamedPackageLPw(deletedPs.realName); } if (changedUsers.size() > 0) { updateDefaultHomeNotLocked(changedUsers); diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index f38c48c75b17f..3995cc6fd00dc 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -747,6 +747,15 @@ public final class Settings implements Watchable, Snappable { mRenamedPackages.remove(pkgName); } + void pruneRenamedPackagesLPw() { + for (int i = mRenamedPackages.size() - 1; i >= 0; i--) { + PackageSetting ps = mPackages.get(mRenamedPackages.valueAt(i)); + if (ps == null) { + mRenamedPackages.removeAt(i); + } + } + } + /** Gets and optionally creates a new shared user id. */ SharedUserSetting getSharedUserLPw(String name, int pkgFlags, int pkgPrivateFlags, boolean create) throws PackageManagerException {