diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-04-15 21:22:46 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-04-15 21:22:46 +0000 |
commit | eba95fad1215bf92699c09e29a9207d71be983bc (patch) | |
tree | ce80b1bdbf5147df0b44d0edf0c5fe08357fdcd0 /packages/PackageInstaller | |
parent | b9553dc63e4dce03c913afa15407d6434497efe6 (diff) | |
parent | 73a8e537caa420ebe498ab906c3487dca6caa2e4 (diff) |
Merge "Fix PackageInstaller failure when called from different user" into rvc-dev am: 73a8e537ca
Change-Id: Ib5c184e852d32a2b7d84fb6f48f1fe31aece9267
Diffstat (limited to 'packages/PackageInstaller')
-rw-r--r-- | packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java index c11e1a03cb00..6fbee16e3dae 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java @@ -30,13 +30,17 @@ import android.content.pm.IPackageManager; import android.content.pm.PackageInstaller; import android.content.pm.PackageManager; import android.content.pm.ProviderInfo; +import android.content.pm.UserInfo; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.RemoteException; +import android.os.UserManager; import android.permission.IPermissionManager; import android.util.Log; +import java.util.List; + /** * Select which activity is the first visible activity of the installation and forward the intent to * it. @@ -47,6 +51,7 @@ public class InstallStart extends Activity { private static final String DOWNLOADS_AUTHORITY = "downloads"; private IPackageManager mIPackageManager; private IPermissionManager mIPermissionManager; + private UserManager mUserManager; private boolean mAbortInstall = false; @Override @@ -54,6 +59,7 @@ public class InstallStart extends Activity { super.onCreate(savedInstanceState); mIPackageManager = AppGlobals.getPackageManager(); mIPermissionManager = AppGlobals.getPermissionManager(); + mUserManager = getSystemService(UserManager.class); Intent intent = getIntent(); String callingPackage = getCallingPackage(); @@ -144,13 +150,16 @@ public class InstallStart extends Activity { if (packages == null) { return false; } + final List<UserInfo> users = mUserManager.getUsers(); for (String packageName : packages) { - try { - if (uid == getPackageManager().getPackageUid(packageName, 0)) { - return true; + for (UserInfo user : users) { + try { + if (uid == getPackageManager().getPackageUidAsUser(packageName, user.id)) { + return true; + } + } catch (PackageManager.NameNotFoundException e) { + // Ignore and try the next package } - } catch (PackageManager.NameNotFoundException e) { - // Ignore and try the next package } } } catch (RemoteException rexc) { |