From 4b72aab7fb063f99406577d4ac0beaeac174982a Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Tue, 9 Feb 2016 17:25:58 -0800 Subject: [PATCH] During update enable system apps for requested users only When a system package is updated, we now enable the package only for requested users, i.e. userId or all users (if userId=USER_ALL). Bug: 19063113 Change-Id: I7bd6166b16f4f8da593b4e7e4d9f5189cd02b45b --- .../com/android/server/pm/PackageManagerService.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index ada745815241e..db60830eaff72 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -12837,16 +12837,19 @@ public class PackageManagerService extends IPackageManager.Stub { // of the package implies that the user actually wants to run that new code, // so we enable the package. PackageSetting ps = mSettings.mPackages.get(pkgName); + final int userId = user.getIdentifier(); if (ps != null) { 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); } + // Enable system package for requested users if (res.origUsers != null) { - for (int userHandle : res.origUsers) { - ps.setEnabled(COMPONENT_ENABLED_STATE_DEFAULT, - userHandle, installerPackageName); + for (int origUserId : res.origUsers) { + if (userId == UserHandle.USER_ALL || userId == origUserId) { + ps.setEnabled(COMPONENT_ENABLED_STATE_DEFAULT, + origUserId, installerPackageName); + } } } // Also convey the prior install/uninstall state @@ -12864,7 +12867,6 @@ public class PackageManagerService extends IPackageManager.Stub { } // It's implied that when a user requests installation, they want the app to be // installed and enabled. - int userId = user.getIdentifier(); if (userId != UserHandle.USER_ALL) { ps.setInstalled(true, userId); ps.setEnabled(COMPONENT_ENABLED_STATE_DEFAULT, userId, installerPackageName);