From 32a019d438257dae2ab8f5bba7f18063d8c72353 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Thu, 4 Apr 2013 15:40:04 -0700 Subject: [PATCH] Implicitly enable system apps when updates installed If someone explicitly installs an update to a system-bundled package, we infer that this means they actually want to use the new code. Bug 7467302 Change-Id: If2dc6f764bafbb3a5c94cbdd32273c030fd784b9 --- .../server/pm/PackageManagerService.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index 3d7dd6383f7d5..2153ac51f3538 100644 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -8223,6 +8223,24 @@ public class PackageManagerService extends IPackageManager.Stub { updatePermissionsLPw(newPackage.packageName, newPackage, UPDATE_PERMISSIONS_REPLACE_PKG | (newPackage.permissions.size() > 0 ? UPDATE_PERMISSIONS_ALL : 0)); + // For system-bundled packages, we assume that installing an upgraded version + // of the package implies that the user actually wants to run that new code, + // so we enable the package. + if (isSystemApp(newPackage)) { + // NB: implicit assumption that system package upgrades apply to all users + if (DEBUG_INSTALL) { + Slog.d(TAG, "Implicitly enabling system package on upgrade: " + pkgName); + } + PackageSetting ps = mSettings.mPackages.get(pkgName); + if (ps != null) { + if (res.origUsers != null) { + for (int userHandle : res.origUsers) { + ps.setEnabled(COMPONENT_ENABLED_STATE_DEFAULT, + userHandle, installerPackageName); + } + } + } + } res.name = pkgName; res.uid = newPackage.applicationInfo.uid; res.pkg = newPackage;