Merge "Creating internal only getActivityInfo for Cross Profile"

This commit is contained in:
Sarup Dalwani
2022-11-14 10:30:02 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 1 deletions

View File

@@ -124,6 +124,14 @@ public interface Computer extends PackageDataSnapshot {
String instantAppPkgName);
ActivityInfo getActivityInfo(ComponentName component, long flags, int userId);
/**
* Similar to {@link Computer#getActivityInfo(android.content.ComponentName, long, int)} but
* only visible as internal service. This method bypass INTERACT_ACROSS_USERS or
* INTERACT_ACROSS_USERS_FULL permission checks and only to be used for intent resolution across
* chained cross profiles
*/
ActivityInfo getActivityInfoCrossProfile(ComponentName component, long flags, int userId);
/**
* Important: The provided filterCallingUid is used exclusively to filter out activities
* that can be seen based on user state. It's typically the original caller uid prior

View File

@@ -834,6 +834,24 @@ public class ComputerEngine implements Computer {
return getActivityInfoInternal(component, flags, Binder.getCallingUid(), userId);
}
/**
* Similar to {@link Computer#getActivityInfo(android.content.ComponentName, long, int)} but
* only visible as internal service. This method bypass INTERACT_ACROSS_USERS or
* INTERACT_ACROSS_USERS_FULL permission checks and only to be used for intent resolution across
* chained cross profiles
* @param component application's component
* @param flags resolve info flags
* @param userId user id where activity resides
* @return ActivityInfo corresponding to requested component.
*/
public final ActivityInfo getActivityInfoCrossProfile(ComponentName component,
@PackageManager.ResolveInfoFlagsBits long flags, int userId) {
if (!mUserManager.exists(userId)) return null;
flags = updateFlagsForComponent(flags, userId);
return getActivityInfoInternalBody(component, flags, Binder.getCallingUid(), userId);
}
/**
* Important: The provided filterCallingUid is used exclusively to filter out activities
* that can be seen based on user state. It's typically the original caller uid prior
@@ -1711,7 +1729,7 @@ public class ComputerEngine implements Computer {
ComponentName forwardingActivityComponentName = new ComponentName(
androidApplication().packageName, className);
ActivityInfo forwardingActivityInfo =
getActivityInfo(forwardingActivityComponentName, 0,
getActivityInfoCrossProfile(forwardingActivityComponentName, 0,
sourceUserId);
if (!targetIsProfile) {
forwardingActivityInfo.showUserIcon = targetUserId;