Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 17ee1d69 authored by Himanshu Gupta's avatar Himanshu Gupta Committed by Android (Google) Code Review
Browse files

Merge "Adding userHandle in ResolveInfo"

parents b438ffce d9b6b204
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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;
    }

+1 −0
Original line number Diff line number Diff line
@@ -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
+2 −0
Original line number Diff line number Diff line
@@ -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;
        }