Loading core/java/android/content/Intent.java +12 −0 Original line number Diff line number Diff line Loading @@ -3834,6 +3834,18 @@ public class Intent implements Parcelable, Cloneable { */ public static final String EXTRA_EPHEMERAL_FAILURE = "android.intent.extra.EPHEMERAL_FAILURE"; /** * The host name that triggered an ephemeral resolution. * @hide */ public static final String EXTRA_EPHEMERAL_HOSTNAME = "android.intent.extra.EPHEMERAL_HOSTNAME"; /** * An opaque token to track ephemeral resolution. * @hide */ public static final String EXTRA_EPHEMERAL_TOKEN = "android.intent.extra.EPHEMERAL_TOKEN"; /** * A Bundle forming a mapping of potential target package names to different extras Bundles * to add to the default intent extras in {@link #EXTRA_INTENT} when used with Loading core/java/android/content/pm/EphemeralRequest.java 0 → 100644 +48 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.content.pm; import android.content.Intent; /** * Information needed to make an ephemeral application resolution request. * @hide */ public final class EphemeralRequest { /** Response from the first phase of ephemeral application resolution */ public final EphemeralResponse responseObj; /** The original intent that triggered ephemeral application resolution */ public final Intent origIntent; /** Resolved type of the intent */ public final String resolvedType; /** The intent that would launch if there were no ephemeral applications */ public final Intent launchIntent; /** The name of the package requesting the ephemeral application */ public final String callingPackage; /** ID of the user requesting the ephemeral application */ public final int userId; public EphemeralRequest(EphemeralResponse responseObj, Intent origIntent, String resolvedType, Intent launchIntent, String callingPackage, int userId) { this.responseObj = responseObj; this.origIntent = origIntent; this.resolvedType = resolvedType; this.launchIntent = launchIntent; this.callingPackage = callingPackage; this.userId = userId; } } No newline at end of file core/java/android/content/pm/EphemeralResolveInfo.java +0 −22 Original line number Diff line number Diff line Loading @@ -137,28 +137,6 @@ public final class EphemeralResolveInfo implements Parcelable { } }; /** @hide */ public static final class EphemeralResolveIntentInfo extends IntentFilter { private final EphemeralResolveInfo mResolveInfo; private final String mSplitName; public EphemeralResolveIntentInfo(@NonNull IntentFilter orig, @NonNull EphemeralResolveInfo resolveInfo, @Nullable String splitName) { super(orig); mResolveInfo = resolveInfo; mSplitName = splitName; } public EphemeralResolveInfo getEphemeralResolveInfo() { return mResolveInfo; } public String getSplitName() { return mSplitName; } } /** * Helper class to generate and store each of the digests and prefixes * sent to the Ephemeral Resolver. Loading core/java/android/content/pm/EphemeralResponse.java 0 → 100644 +51 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.content.pm; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.IntentFilter; /** * Ephemeral application resolution response. * @hide */ public final class EphemeralResponse extends IntentFilter { /** Resolved information returned from the external ephemeral resolver */ public final EphemeralResolveInfo resolveInfo; /** The resolved package. Copied from {@link #resolveInfo}. */ public final String packageName; /** The resolve split. Copied from the matched filter in {@link #resolveInfo}. */ public final String splitName; /** Whether or not ephemeral resolution needs the second phase */ public final boolean needsPhase2; /** Opaque token to track the ephemeral application resolution */ public final String token; public EphemeralResponse(@NonNull EphemeralResolveInfo resolveInfo, @NonNull IntentFilter orig, @Nullable String splitName, @NonNull String token, boolean needsPhase2) { super(orig); this.resolveInfo = resolveInfo; this.packageName = resolveInfo.getPackageName(); this.splitName = splitName; this.token = token; this.needsPhase2 = needsPhase2; } } No newline at end of file core/java/android/content/pm/PackageManagerInternal.java +13 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.content.pm; import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager.NameNotFoundException; import android.util.SparseArray; Loading Loading @@ -208,4 +209,16 @@ public abstract class PackageManagerInternal { */ public abstract String getNameForUid(int uid); /** * Request to perform the second phase of ephemeral resolution. * @param responseObj The response of the first phase of ephemeral resolution * @param origIntent The original intent that triggered ephemeral resolution * @param resolvedType The resolved type of the intent * @param launchIntent The intent that would launch if there was no ephemeral application * @param callingPackage The name of the package requesting the ephemeral application * @param userId The ID of the user that triggered ephemeral resolution */ public abstract void requestEphemeralResolutionPhaseTwo(EphemeralResponse responseObj, Intent origIntent, String resolvedType, Intent launchIntent, String callingPackage, int userId); } Loading
core/java/android/content/Intent.java +12 −0 Original line number Diff line number Diff line Loading @@ -3834,6 +3834,18 @@ public class Intent implements Parcelable, Cloneable { */ public static final String EXTRA_EPHEMERAL_FAILURE = "android.intent.extra.EPHEMERAL_FAILURE"; /** * The host name that triggered an ephemeral resolution. * @hide */ public static final String EXTRA_EPHEMERAL_HOSTNAME = "android.intent.extra.EPHEMERAL_HOSTNAME"; /** * An opaque token to track ephemeral resolution. * @hide */ public static final String EXTRA_EPHEMERAL_TOKEN = "android.intent.extra.EPHEMERAL_TOKEN"; /** * A Bundle forming a mapping of potential target package names to different extras Bundles * to add to the default intent extras in {@link #EXTRA_INTENT} when used with Loading
core/java/android/content/pm/EphemeralRequest.java 0 → 100644 +48 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.content.pm; import android.content.Intent; /** * Information needed to make an ephemeral application resolution request. * @hide */ public final class EphemeralRequest { /** Response from the first phase of ephemeral application resolution */ public final EphemeralResponse responseObj; /** The original intent that triggered ephemeral application resolution */ public final Intent origIntent; /** Resolved type of the intent */ public final String resolvedType; /** The intent that would launch if there were no ephemeral applications */ public final Intent launchIntent; /** The name of the package requesting the ephemeral application */ public final String callingPackage; /** ID of the user requesting the ephemeral application */ public final int userId; public EphemeralRequest(EphemeralResponse responseObj, Intent origIntent, String resolvedType, Intent launchIntent, String callingPackage, int userId) { this.responseObj = responseObj; this.origIntent = origIntent; this.resolvedType = resolvedType; this.launchIntent = launchIntent; this.callingPackage = callingPackage; this.userId = userId; } } No newline at end of file
core/java/android/content/pm/EphemeralResolveInfo.java +0 −22 Original line number Diff line number Diff line Loading @@ -137,28 +137,6 @@ public final class EphemeralResolveInfo implements Parcelable { } }; /** @hide */ public static final class EphemeralResolveIntentInfo extends IntentFilter { private final EphemeralResolveInfo mResolveInfo; private final String mSplitName; public EphemeralResolveIntentInfo(@NonNull IntentFilter orig, @NonNull EphemeralResolveInfo resolveInfo, @Nullable String splitName) { super(orig); mResolveInfo = resolveInfo; mSplitName = splitName; } public EphemeralResolveInfo getEphemeralResolveInfo() { return mResolveInfo; } public String getSplitName() { return mSplitName; } } /** * Helper class to generate and store each of the digests and prefixes * sent to the Ephemeral Resolver. Loading
core/java/android/content/pm/EphemeralResponse.java 0 → 100644 +51 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.content.pm; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.IntentFilter; /** * Ephemeral application resolution response. * @hide */ public final class EphemeralResponse extends IntentFilter { /** Resolved information returned from the external ephemeral resolver */ public final EphemeralResolveInfo resolveInfo; /** The resolved package. Copied from {@link #resolveInfo}. */ public final String packageName; /** The resolve split. Copied from the matched filter in {@link #resolveInfo}. */ public final String splitName; /** Whether or not ephemeral resolution needs the second phase */ public final boolean needsPhase2; /** Opaque token to track the ephemeral application resolution */ public final String token; public EphemeralResponse(@NonNull EphemeralResolveInfo resolveInfo, @NonNull IntentFilter orig, @Nullable String splitName, @NonNull String token, boolean needsPhase2) { super(orig); this.resolveInfo = resolveInfo; this.packageName = resolveInfo.getPackageName(); this.splitName = splitName; this.token = token; this.needsPhase2 = needsPhase2; } } No newline at end of file
core/java/android/content/pm/PackageManagerInternal.java +13 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.content.pm; import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager.NameNotFoundException; import android.util.SparseArray; Loading Loading @@ -208,4 +209,16 @@ public abstract class PackageManagerInternal { */ public abstract String getNameForUid(int uid); /** * Request to perform the second phase of ephemeral resolution. * @param responseObj The response of the first phase of ephemeral resolution * @param origIntent The original intent that triggered ephemeral resolution * @param resolvedType The resolved type of the intent * @param launchIntent The intent that would launch if there was no ephemeral application * @param callingPackage The name of the package requesting the ephemeral application * @param userId The ID of the user that triggered ephemeral resolution */ public abstract void requestEphemeralResolutionPhaseTwo(EphemeralResponse responseObj, Intent origIntent, String resolvedType, Intent launchIntent, String callingPackage, int userId); }