summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2013-04-04 15:40:04 -0700
committerChristopher Tate <ctate@google.com>2013-04-09 17:11:55 -0700
commit32a019d438257dae2ab8f5bba7f18063d8c72353 (patch)
tree9c75bb9baa4332e5a4d1ec44ec43daead2ca8400
parent3c09715cedc737cc6e36c201d9f9188c3615e9a5 (diff)
downloadframeworks_base-32a019d438257dae2ab8f5bba7f18063d8c72353.zip
frameworks_base-32a019d438257dae2ab8f5bba7f18063d8c72353.tar.gz
frameworks_base-32a019d438257dae2ab8f5bba7f18063d8c72353.tar.bz2
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
-rw-r--r--services/java/com/android/server/pm/PackageManagerService.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 3d7dd63..2153ac5 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;