101ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy/* 201ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * Copyright (C) 2016 The Android Open Source Project 301ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * 401ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * Licensed under the Apache License, Version 2.0 (the "License"); 501ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * you may not use this file except in compliance with the License. 601ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * You may obtain a copy of the License at 701ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * 801ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * http://www.apache.org/licenses/LICENSE-2.0 901ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * 1001ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * Unless required by applicable law or agreed to in writing, software 1101ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * distributed under the License is distributed on an "AS IS" BASIS, 1201ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1301ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * See the License for the specific language governing permissions and 1401ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * limitations under the License. 1501ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy */ 1601ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy 1701ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedypackage android.content.pm; 1801ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy 1901ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedyimport android.annotation.NonNull; 2001ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedyimport android.annotation.Nullable; 21e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedyimport android.content.Intent; 2201ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedyimport android.content.IntentFilter; 2301ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy 2401ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy/** 25e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy * Auxiliary application resolution response. 26e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy * <p> 27e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy * Used when resolution occurs, but, the target is not actually on the device. 28e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy * This happens resolving instant apps that haven't been installed yet or if 29e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy * the application consists of multiple feature splits and the needed split 30e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy * hasn't been installed. 3101ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy * @hide 3201ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy */ 33e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedypublic final class AuxiliaryResolveInfo extends IntentFilter { 341fb3404b2ba69a823e961bec2d9ed61622107052Todd Kennedy /** Resolved information returned from the external instant resolver */ 351fb3404b2ba69a823e961bec2d9ed61622107052Todd Kennedy public final InstantAppResolveInfo resolveInfo; 3601ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy /** The resolved package. Copied from {@link #resolveInfo}. */ 3701ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy public final String packageName; 3801ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy /** The resolve split. Copied from the matched filter in {@link #resolveInfo}. */ 3901ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy public final String splitName; 401fb3404b2ba69a823e961bec2d9ed61622107052Todd Kennedy /** Whether or not instant resolution needs the second phase */ 41e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy public final boolean needsPhaseTwo; 421fb3404b2ba69a823e961bec2d9ed61622107052Todd Kennedy /** Opaque token to track the instant application resolution */ 4301ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy public final String token; 44e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy /** The version code of the package */ 45e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy public final int versionCode; 467dd99e3d463eb2354e5ddb0cbeed1333ec590235Todd Kennedy /** An intent to start upon failure to install */ 477dd99e3d463eb2354e5ddb0cbeed1333ec590235Todd Kennedy public final Intent failureIntent; 4801ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy 49e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy /** Create a response for installing an instant application. */ 501fb3404b2ba69a823e961bec2d9ed61622107052Todd Kennedy public AuxiliaryResolveInfo(@NonNull InstantAppResolveInfo resolveInfo, 5101ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy @NonNull IntentFilter orig, 5201ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy @Nullable String splitName, 5301ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy @NonNull String token, 547dd99e3d463eb2354e5ddb0cbeed1333ec590235Todd Kennedy boolean needsPhase2, 557dd99e3d463eb2354e5ddb0cbeed1333ec590235Todd Kennedy @Nullable Intent failureIntent) { 5601ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy super(orig); 5701ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy this.resolveInfo = resolveInfo; 5801ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy this.packageName = resolveInfo.getPackageName(); 5901ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy this.splitName = splitName; 6001ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy this.token = token; 61e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy this.needsPhaseTwo = needsPhase2; 62e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy this.versionCode = resolveInfo.getVersionCode(); 637dd99e3d463eb2354e5ddb0cbeed1333ec590235Todd Kennedy this.failureIntent = failureIntent; 64e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy } 65e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy 66e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy /** Create a response for installing a split on demand. */ 67e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy public AuxiliaryResolveInfo(@NonNull String packageName, 68e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy @Nullable String splitName, 697dd99e3d463eb2354e5ddb0cbeed1333ec590235Todd Kennedy int versionCode, 707dd99e3d463eb2354e5ddb0cbeed1333ec590235Todd Kennedy @Nullable Intent failureIntent) { 71e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy super(); 72e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy this.packageName = packageName; 73e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy this.splitName = splitName; 74e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy this.versionCode = versionCode; 75e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy this.resolveInfo = null; 76e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy this.token = null; 77e991022423c2e5b4386553af7ef3b54da7c54be1Todd Kennedy this.needsPhaseTwo = false; 787dd99e3d463eb2354e5ddb0cbeed1333ec590235Todd Kennedy this.failureIntent = failureIntent; 7901ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy } 8001ad0c7e403794b272494f187d91f57bdfa07c9dTodd Kennedy}