Show the icon of the personal space.
In an intent disambiguation dialog from a managed profile,
when the intent can be forwarded to the personal space:
show the icon of the parent next to "Personal apps".
And put it at the bottom of the dialog.
Change-Id: I523222aac5dde9653e784eb26cf23cdaf018b86c
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 41fe327..f40ca3a 100755
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -3577,9 +3577,11 @@
private ResolveInfo createForwardingResolveInfo(IntentFilter filter,
int sourceUserId, int targetUserId) {
+ ResolveInfo forwardingResolveInfo = new ResolveInfo();
String className;
if (targetUserId == UserHandle.USER_OWNER) {
className = FORWARD_INTENT_TO_USER_OWNER;
+ forwardingResolveInfo.showTargetUserIcon = true;
} else {
className = FORWARD_INTENT_TO_MANAGED_PROFILE;
}
@@ -3587,13 +3589,13 @@
mAndroidApplication.packageName, className);
ActivityInfo forwardingActivityInfo = getActivityInfo(forwardingActivityComponentName, 0,
sourceUserId);
- ResolveInfo forwardingResolveInfo = new ResolveInfo();
forwardingResolveInfo.activityInfo = forwardingActivityInfo;
forwardingResolveInfo.priority = 0;
forwardingResolveInfo.preferredOrder = 0;
forwardingResolveInfo.match = 0;
forwardingResolveInfo.isDefault = true;
forwardingResolveInfo.filter = filter;
+ forwardingResolveInfo.targetUserId = targetUserId;
return forwardingResolveInfo;
}
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 1839259..a0cb098 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -412,13 +412,17 @@
@Override
public Bitmap getUserIcon(int userId) {
- checkManageUsersPermission("read users");
synchronized (mPackagesLock) {
UserInfo info = mUsers.get(userId);
if (info == null || info.partial) {
Slog.w(LOG_TAG, "getUserIcon: unknown user #" + userId);
return null;
}
+ int callingGroupId = mUsers.get(UserHandle.getCallingUserId()).profileGroupId;
+ if (callingGroupId == UserInfo.NO_PROFILE_GROUP_ID
+ || callingGroupId != info.profileGroupId) {
+ checkManageUsersPermission("get the icon of a user who is not related");
+ }
if (info.iconPath == null) {
return null;
}