Merge "Adding userHandle in ResolveInfo"

This commit is contained in:
Himanshu Gupta
2023-01-13 15:03:17 +00:00
committed by Android (Google) Code Review
4 changed files with 23 additions and 0 deletions

View File

@@ -16,6 +16,7 @@
package android.content.pm;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
@@ -106,6 +107,14 @@ public class ResolveInfo implements Parcelable {
*/
public int match;
/**
* UserHandle of originating user for ResolveInfo. This will help caller distinguish cross
* profile results from intent resolution.
* @hide
*/
@Nullable
public UserHandle userHandle;
/**
* Only set when returned by
* {@link PackageManager#queryIntentActivityOptions}, this tells you
@@ -418,6 +427,7 @@ public class ResolveInfo implements Parcelable {
handleAllWebDataURI = orig.handleAllWebDataURI;
mAutoResolutionAllowed = orig.mAutoResolutionAllowed;
isInstantAppAvailable = orig.isInstantAppAvailable;
userHandle = orig.userHandle;
}
public String toString() {
@@ -441,6 +451,10 @@ public class ResolveInfo implements Parcelable {
sb.append(" targetUserId=");
sb.append(targetUserId);
}
sb.append(" userHandle=");
sb.append(userHandle);
sb.append('}');
return sb.toString();
}
@@ -483,6 +497,7 @@ public class ResolveInfo implements Parcelable {
dest.writeInt(handleAllWebDataURI ? 1 : 0);
dest.writeInt(mAutoResolutionAllowed ? 1 : 0);
dest.writeInt(isInstantAppAvailable ? 1 : 0);
dest.writeInt(userHandle != null ? userHandle.getIdentifier() : UserHandle.USER_CURRENT);
}
public static final @android.annotation.NonNull Creator<ResolveInfo> CREATOR
@@ -532,6 +547,10 @@ public class ResolveInfo implements Parcelable {
handleAllWebDataURI = source.readInt() != 0;
mAutoResolutionAllowed = source.readInt() != 0;
isInstantAppAvailable = source.readInt() != 0;
int userHandleId = source.readInt();
if (userHandleId != UserHandle.USER_CURRENT) {
userHandle = UserHandle.of(userHandleId);
}
}
public static class DisplayNameComparator

View File

@@ -1755,6 +1755,7 @@ public class ComputerEngine implements Computer {
forwardingResolveInfo.isDefault = true;
forwardingResolveInfo.filter = new IntentFilter(filter.getIntentFilter());
forwardingResolveInfo.targetUserId = targetUserId;
forwardingResolveInfo.userHandle = UserHandle.of(sourceUserId);
return forwardingResolveInfo;
}

View File

@@ -281,6 +281,7 @@ final class ResolveIntentHelper {
ri.handleAllWebDataURI = browserCount == n;
ri.activityInfo = new ActivityInfo(ri.activityInfo);
ri.activityInfo.labelRes = ResolverActivity.getLabelRes(intent.getAction());
if (ri.userHandle == null) ri.userHandle = UserHandle.of(userId);
// If all of the options come from the same package, show the application's
// label and icon instead of the generic resolver's.
// Some calls like Intent.resolveActivityInfo query the ResolveInfo from here

View File

@@ -35,6 +35,7 @@ import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.DebugUtils;
@@ -1197,6 +1198,7 @@ public class ComponentResolver extends ComponentResolverLocked implements
res.iconResourceId = info.getIcon();
res.system = res.activityInfo.applicationInfo.isSystemApp();
res.isInstantAppAvailable = userState.isInstantApp();
res.userHandle = UserHandle.of(userId);
return res;
}