summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dianne Hackborn <hackbod@google.com> 2012-09-19 12:42:37 -0700
committer Dianne Hackborn <hackbod@google.com> 2012-09-19 12:42:37 -0700
commiteba784ff4ab2a080ddc1d41b90db0e3729ee1ea3 (patch)
tree7a3f555c4d806ade902df43c7852841539548c9e
parentc535d2f30efff83b93094bbc642d59d8225dcc18 (diff)
Changes to support side-loading of apps from other users.
Change-Id: I5b7c0aa0dc9566b29d5980dc7f42a508a61a58d3
-rw-r--r--core/java/android/content/Intent.java4
-rwxr-xr-xcore/java/android/widget/AppSecurityPermissions.java15
2 files changed, 8 insertions, 11 deletions
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index d3b8648f5d59..9e051112a71d 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -1254,7 +1254,9 @@ public class Intent implements Parcelable, Cloneable {
* Activity Action: Launch application installer.
* <p>
* Input: The data must be a content: or file: URI at which the application
- * can be retrieved. You can optionally supply
+ * can be retrieved. As of {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1},
+ * you can also use "package:<package-name>" to install an application for the
+ * current user that is already installed for another user. You can optionally supply
* {@link #EXTRA_INSTALLER_PACKAGE_NAME}, {@link #EXTRA_NOT_UNKNOWN_SOURCE},
* {@link #EXTRA_ALLOW_REPLACE}, and {@link #EXTRA_RETURN_RESULT}.
* <p>
diff --git a/core/java/android/widget/AppSecurityPermissions.java b/core/java/android/widget/AppSecurityPermissions.java
index f79ec421dfa8..27d15f6168c7 100755
--- a/core/java/android/widget/AppSecurityPermissions.java
+++ b/core/java/android/widget/AppSecurityPermissions.java
@@ -24,8 +24,6 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.PackageParser;
-import android.content.pm.PackageUserState;
import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
import android.graphics.drawable.Drawable;
@@ -272,7 +270,7 @@ public class AppSecurityPermissions {
setPermissions(mPermsList);
}
- public AppSecurityPermissions(Context context, PackageParser.Package pkg) {
+ public AppSecurityPermissions(Context context, PackageInfo info) {
mContext = context;
mPm = mContext.getPackageManager();
loadResources();
@@ -280,14 +278,11 @@ public class AppSecurityPermissions {
mPermGroupComparator = new PermissionGroupInfoComparator();
mPermsList = new ArrayList<MyPermissionInfo>();
Set<MyPermissionInfo> permSet = new HashSet<MyPermissionInfo>();
- if(pkg == null) {
+ if(info == null) {
return;
}
// Convert to a PackageInfo
- PackageInfo info = PackageParser.generatePackageInfo(pkg, null,
- PackageManager.GET_PERMISSIONS, 0, 0, null,
- new PackageUserState());
PackageInfo installedPkgInfo = null;
// Get requested permissions
if (info.requestedPermissions != null) {
@@ -299,13 +294,13 @@ public class AppSecurityPermissions {
extractPerms(info, permSet, installedPkgInfo);
}
// Get permissions related to shared user if any
- if (pkg.mSharedUserId != null) {
+ if (info.sharedUserId != null) {
int sharedUid;
try {
- sharedUid = mPm.getUidForSharedUser(pkg.mSharedUserId);
+ sharedUid = mPm.getUidForSharedUser(info.sharedUserId);
getAllUsedPermissions(sharedUid, permSet);
} catch (NameNotFoundException e) {
- Log.w(TAG, "Could'nt retrieve shared user id for:"+pkg.packageName);
+ Log.w(TAG, "Could'nt retrieve shared user id for:"+info.packageName);
}
}
// Retrieve list of permissions