diff options
| author | 2019-04-30 23:43:24 +0000 | |
|---|---|---|
| committer | 2019-04-30 23:43:24 +0000 | |
| commit | f400227e7eaad12e24ab00b7be7d56e62c4be022 (patch) | |
| tree | 28c1e2c9bec2724fe6ecedee483bc4827e3b3ab8 | |
| parent | 9ff8ed8292f9dd323cdd322d321b862ab9e74de5 (diff) | |
| parent | ac3532f336c8d52cfbfd40ee247e7ec15b83a668 (diff) | |
Merge "Enable upgrading persistent APKs on boot." into qt-dev
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index e62402e065cd..20d47ed7c1a6 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -939,6 +939,7 @@ public class PackageManagerService extends IPackageManager.Stub ComponentName mCustomResolverComponentName; boolean mResolverReplaced = false; + boolean mOkToReplacePersistentPackages = false; private final @Nullable ComponentName mIntentFilterVerifierComponent; private final @Nullable IntentFilterVerifier<ActivityIntentInfo> mIntentFilterVerifier; @@ -17325,7 +17326,8 @@ public class PackageManagerService extends IPackageManager.Stub + " target SDK " + oldTargetSdk + " does."); } // Prevent persistent apps from being updated - if ((oldPackage.applicationInfo.flags & ApplicationInfo.FLAG_PERSISTENT) != 0) { + if (((oldPackage.applicationInfo.flags & ApplicationInfo.FLAG_PERSISTENT) != 0) + && !mOkToReplacePersistentPackages) { throw new PrepareFailure(PackageManager.INSTALL_FAILED_INVALID_APK, "Package " + oldPackage.packageName + " is a persistent app. " + "Persistent apps are not updateable."); @@ -21505,10 +21507,12 @@ public class PackageManagerService extends IPackageManager.Stub mModuleInfoProvider.systemReady(); + mOkToReplacePersistentPackages = true; // Installer service might attempt to install some packages that have been staged for // installation on reboot. Make sure this is the last component to be call since the // installation might require other components to be ready. mInstallerService.restoreAndApplyStagedSessionIfNeeded(); + mOkToReplacePersistentPackages = false; } public void waitForAppDataPrepared() { |