diff options
| author | 2024-02-28 21:04:13 +0000 | |
|---|---|---|
| committer | 2024-02-28 21:04:13 +0000 | |
| commit | 403a5df815d9f30c068b21e8e5bc7ecf2c36d76d (patch) | |
| tree | 7a24a67f8a1e2f8e4b48d4fb8083cfb248a33c72 | |
| parent | 06f219260b469091855ac9aa2c37de536950b286 (diff) | |
| parent | e46a3cd56b39e5528bb1d35d83674ad14e6b2fd7 (diff) | |
Merge "Always mark package as "uninstalled" for all new users." into main
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 69f790637d80..fe8030b656b0 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1541,6 +1541,19 @@ public class PackageManagerService implements PackageSender, TestUtilityService return; } + // Initialize all necessary settings for archival installation. + pkgSetting + // No package. + .setPkg(null) + // Mark for later restore. + .setPendingRestore(true); + for (int userId : userIds) { + // Unmark "installed" for all users. + pkgSetting + .modifyUserState(userId) + .setInstalled(false); + } + String responsibleInstallerPackage = PackageArchiver.getResponsibleInstallerPackage( pkgSetting); // TODO(b/278553670) Check if responsibleInstallerPackage supports unarchival. @@ -1551,16 +1564,11 @@ public class PackageManagerService implements PackageSender, TestUtilityService for (int userId : userIds) { var archiveState = mInstallerService.mPackageArchiver.createArchiveState( archivePackage, userId, responsibleInstallerPackage); - if (archiveState == null) { - continue; - } - pkgSetting - .setPkg(null) - // This package was installed as archived. Need to mark it for later restore. - .setPendingRestore(true) + if (archiveState != null) { + pkgSetting .modifyUserState(userId) - .setInstalled(false) .setArchiveState(archiveState); + } } } |