diff --git a/services/core/java/com/android/server/pm/DeletePackageHelper.java b/services/core/java/com/android/server/pm/DeletePackageHelper.java index 9a5ee8124cb48..5f52c16d319c7 100644 --- a/services/core/java/com/android/server/pm/DeletePackageHelper.java +++ b/services/core/java/com/android/server/pm/DeletePackageHelper.java @@ -453,6 +453,7 @@ final class DeletePackageHelper { // We need to set it back to 'installed' so the uninstall // broadcasts will be sent correctly. if (DEBUG_REMOVE) Slog.d(TAG, "Not installed by other users, full delete"); + ps.setPkg(null); ps.setInstalled(true, userId); mPm.mSettings.writeKernelMappingLPr(ps); clearPackageStateAndReturn = false; diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index 5932929a69c4c..f3d5f6e84113e 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -654,7 +654,7 @@ final class InstallPackageHelper { synchronized (mPm.mLock) { final Computer snapshot = mPm.snapshotComputer(); pkgSetting = mPm.mSettings.getPackageLPr(packageName); - if (pkgSetting == null) { + if (pkgSetting == null || pkgSetting.getPkg() == null) { return PackageManager.INSTALL_FAILED_INVALID_URI; } if (!snapshot.canViewInstantApps(callingUid, UserHandle.getUserId(callingUid))) {