diff options
| author | 2020-12-03 00:04:16 +0000 | |
|---|---|---|
| committer | 2020-12-03 00:04:16 +0000 | |
| commit | 33064dbac978ff13bc28333aba0c5c451361e842 (patch) | |
| tree | 3a63b4fd3a74d3f7a7e7869b84eec3a6ecadba73 | |
| parent | 26a949ed1af2f5abafc31353baa6da73db29d455 (diff) | |
| parent | 2cae9f6275ac331a0a1be32560566e052b7d065c (diff) | |
Merge changes I9d3b4f8f,I4854a310
* changes:
shell pm: move context creation to where it's used
adb shell pm: create context as the right user
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerShellCommand.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index 9aa1a621a760..9720819a62ab 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -146,7 +146,7 @@ class PackageManagerShellCommand extends ShellCommand { final IPackageManager mInterface; final IPermissionManager mPermissionManager; - final Context mShellPackageContext; + final Context mContext; final private WeakHashMap<String, Resources> mResourceCache = new WeakHashMap<String, Resources>(); int mTargetUser; @@ -158,12 +158,7 @@ class PackageManagerShellCommand extends ShellCommand { PackageManagerService service, IPermissionManager permissionManager, Context context) { mInterface = service; mPermissionManager = permissionManager; - try { - mShellPackageContext = context.createPackageContext("com.android.shell", 0); - } catch (NameNotFoundException e) { - // should not happen - throw new RuntimeException(e); - } + mContext = context; } @Override @@ -486,8 +481,17 @@ class PackageManagerShellCommand extends ShellCommand { return 1; } + final Context shellPackageContext; + try { + shellPackageContext = mContext.createPackageContextAsUser( + "com.android.shell", 0, Binder.getCallingUserHandle()); + } catch (NameNotFoundException e) { + // should not happen + throw new RuntimeException(e); + } + final LocalIntentReceiver receiver = new LocalIntentReceiver(); - RollbackManager rm = mShellPackageContext.getSystemService(RollbackManager.class); + RollbackManager rm = shellPackageContext.getSystemService(RollbackManager.class); RollbackInfo rollback = null; for (RollbackInfo r : rm.getAvailableRollbacks()) { for (PackageRollbackInfo info : r.getPackages()) { |