diff options
| author | 2012-09-19 12:42:37 -0700 | |
|---|---|---|
| committer | 2012-09-19 12:42:37 -0700 | |
| commit | eba784ff4ab2a080ddc1d41b90db0e3729ee1ea3 (patch) | |
| tree | 7a3f555c4d806ade902df43c7852841539548c9e | |
| parent | c535d2f30efff83b93094bbc642d59d8225dcc18 (diff) | |
Changes to support side-loading of apps from other users.
Change-Id: I5b7c0aa0dc9566b29d5980dc7f42a508a61a58d3
| -rw-r--r-- | core/java/android/content/Intent.java | 4 | ||||
| -rwxr-xr-x | core/java/android/widget/AppSecurityPermissions.java | 15 |
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 |