Opened some App Links APIs to @SystemApi
This change promotes some of the APIs that Settings uses for the "Open by default" screen from @hide to @SystemApi. GTS tests are added in ag/1811536. This change also changes the protection level for Manifest.permission.SET_PREFERRED_APPLICATIONS to allow package verifiers (e.g. the Play Store) to be granted it. This permission is used in the PM.updateIntentVerificationStatusAsUser() and PM.setDefaultBrowserPackageNameAsUser() APIs. Bug:31008483 Test: Patch in ag/1811536 and follow the test instructions there. Change-Id: I18b069de11eaa8fe97c151fb3cfb63854f1fd056
This commit is contained in:
@@ -10165,6 +10165,15 @@ package android.content.pm {
|
||||
field public java.lang.String targetPackage;
|
||||
}
|
||||
|
||||
public final class IntentFilterVerificationInfo implements android.os.Parcelable {
|
||||
method public int describeContents();
|
||||
method public java.util.Set<java.lang.String> getDomains();
|
||||
method public java.lang.String getPackageName();
|
||||
method public int getStatus();
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
field public static final android.os.Parcelable.Creator<android.content.pm.IntentFilterVerificationInfo> CREATOR;
|
||||
}
|
||||
|
||||
public class LabeledIntent extends android.content.Intent {
|
||||
ctor public LabeledIntent(android.content.Intent, java.lang.String, int, int);
|
||||
ctor public LabeledIntent(android.content.Intent, java.lang.String, java.lang.CharSequence, int);
|
||||
@@ -10425,6 +10434,7 @@ package android.content.pm {
|
||||
method public abstract android.content.pm.ActivityInfo getActivityInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
|
||||
method public abstract android.graphics.drawable.Drawable getActivityLogo(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
|
||||
method public abstract android.graphics.drawable.Drawable getActivityLogo(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
|
||||
method public abstract java.util.List<android.content.IntentFilter> getAllIntentFilters(java.lang.String);
|
||||
method public abstract java.util.List<android.content.pm.PermissionGroupInfo> getAllPermissionGroups(int);
|
||||
method public abstract android.graphics.drawable.Drawable getApplicationBanner(android.content.pm.ApplicationInfo);
|
||||
method public abstract android.graphics.drawable.Drawable getApplicationBanner(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
|
||||
@@ -10437,12 +10447,15 @@ package android.content.pm {
|
||||
method public abstract android.graphics.drawable.Drawable getApplicationLogo(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
|
||||
method public abstract int getComponentEnabledSetting(android.content.ComponentName);
|
||||
method public abstract android.graphics.drawable.Drawable getDefaultActivityIcon();
|
||||
method public abstract java.lang.String getDefaultBrowserPackageNameAsUser(int);
|
||||
method public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo);
|
||||
method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int);
|
||||
method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
|
||||
method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
|
||||
method public abstract java.lang.String getInstallerPackageName(java.lang.String);
|
||||
method public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
|
||||
method public abstract java.util.List<android.content.pm.IntentFilterVerificationInfo> getIntentFilterVerifications(java.lang.String);
|
||||
method public abstract int getIntentVerificationStatusAsUser(java.lang.String, int);
|
||||
method public abstract android.content.Intent getLaunchIntentForPackage(java.lang.String);
|
||||
method public abstract android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String);
|
||||
method public abstract java.lang.String getNameForUid(int);
|
||||
@@ -10496,7 +10509,9 @@ package android.content.pm {
|
||||
method public abstract void setApplicationCategoryHint(java.lang.String, int);
|
||||
method public abstract void setApplicationEnabledSetting(java.lang.String, int, int);
|
||||
method public abstract void setComponentEnabledSetting(android.content.ComponentName, int, int);
|
||||
method public abstract boolean setDefaultBrowserPackageNameAsUser(java.lang.String, int);
|
||||
method public abstract void setInstallerPackageName(java.lang.String, java.lang.String);
|
||||
method public abstract boolean updateIntentVerificationStatusAsUser(java.lang.String, int, int);
|
||||
method public abstract void updatePermissionFlags(java.lang.String, java.lang.String, int, int, android.os.UserHandle);
|
||||
method public abstract void verifyIntentFilter(int, int, java.util.List<java.lang.String>);
|
||||
method public abstract void verifyPendingInstall(int, int);
|
||||
@@ -10654,6 +10669,11 @@ package android.content.pm {
|
||||
field public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103; // 0xffffff99
|
||||
field public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102; // 0xffffff9a
|
||||
field public static final int INSTALL_SUCCEEDED = 1; // 0x1
|
||||
field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS = 2; // 0x2
|
||||
field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK = 4; // 0x4
|
||||
field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK = 1; // 0x1
|
||||
field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER = 3; // 0x3
|
||||
field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED = 0; // 0x0
|
||||
field public static final int INTENT_FILTER_VERIFICATION_FAILURE = -1; // 0xffffffff
|
||||
field public static final int INTENT_FILTER_VERIFICATION_SUCCESS = 1; // 0x1
|
||||
field public static final int MASK_PERMISSION_FLAGS = 255; // 0xff
|
||||
@@ -42220,12 +42240,15 @@ package android.test.mock {
|
||||
method public android.graphics.drawable.Drawable getApplicationLogo(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
|
||||
method public int getComponentEnabledSetting(android.content.ComponentName);
|
||||
method public android.graphics.drawable.Drawable getDefaultActivityIcon();
|
||||
method public java.lang.String getDefaultBrowserPackageNameAsUser(int);
|
||||
method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo);
|
||||
method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int);
|
||||
method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
|
||||
method public java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
|
||||
method public java.lang.String getInstallerPackageName(java.lang.String);
|
||||
method public android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
|
||||
method public java.util.List<android.content.pm.IntentFilterVerificationInfo> getIntentFilterVerifications(java.lang.String);
|
||||
method public int getIntentVerificationStatusAsUser(java.lang.String, int);
|
||||
method public android.content.Intent getLaunchIntentForPackage(java.lang.String);
|
||||
method public android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String);
|
||||
method public java.lang.String getNameForUid(int);
|
||||
@@ -42277,7 +42300,9 @@ package android.test.mock {
|
||||
method public void setApplicationCategoryHint(java.lang.String, int);
|
||||
method public void setApplicationEnabledSetting(java.lang.String, int, int);
|
||||
method public void setComponentEnabledSetting(android.content.ComponentName, int, int);
|
||||
method public boolean setDefaultBrowserPackageNameAsUser(java.lang.String, int);
|
||||
method public void setInstallerPackageName(java.lang.String, java.lang.String);
|
||||
method public boolean updateIntentVerificationStatusAsUser(java.lang.String, int, int);
|
||||
method public void updatePermissionFlags(java.lang.String, java.lang.String, int, int, android.os.UserHandle);
|
||||
method public void verifyIntentFilter(int, int, java.util.List<java.lang.String>);
|
||||
method public void verifyPendingInstall(int, int);
|
||||
|
||||
@@ -22,6 +22,7 @@ import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATIO
|
||||
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK;
|
||||
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
|
||||
|
||||
import android.annotation.SystemApi;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.text.TextUtils;
|
||||
@@ -36,6 +37,7 @@ import org.xmlpull.v1.XmlSerializer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* The {@link com.android.server.pm.PackageManagerService} maintains some
|
||||
@@ -43,6 +45,7 @@ import java.util.ArrayList;
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public final class IntentFilterVerificationInfo implements Parcelable {
|
||||
private static final String TAG = IntentFilterVerificationInfo.class.getName();
|
||||
|
||||
@@ -55,22 +58,26 @@ public final class IntentFilterVerificationInfo implements Parcelable {
|
||||
private String mPackageName;
|
||||
private int mMainStatus;
|
||||
|
||||
/** @hide */
|
||||
public IntentFilterVerificationInfo() {
|
||||
mPackageName = null;
|
||||
mMainStatus = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public IntentFilterVerificationInfo(String packageName, ArraySet<String> domains) {
|
||||
mPackageName = packageName;
|
||||
mDomains = domains;
|
||||
mMainStatus = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public IntentFilterVerificationInfo(XmlPullParser parser)
|
||||
throws IOException, XmlPullParserException {
|
||||
readFromXml(parser);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public IntentFilterVerificationInfo(Parcel source) {
|
||||
readFromParcel(source);
|
||||
}
|
||||
@@ -83,6 +90,7 @@ public final class IntentFilterVerificationInfo implements Parcelable {
|
||||
return mMainStatus;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void setStatus(int s) {
|
||||
if (s >= INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED &&
|
||||
s <= INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER) {
|
||||
@@ -92,14 +100,16 @@ public final class IntentFilterVerificationInfo implements Parcelable {
|
||||
}
|
||||
}
|
||||
|
||||
public ArraySet<String> getDomains() {
|
||||
public Set<String> getDomains() {
|
||||
return mDomains;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void setDomains(ArraySet<String> list) {
|
||||
mDomains = list;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public String getDomainsString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String str : mDomains) {
|
||||
@@ -135,6 +145,7 @@ public final class IntentFilterVerificationInfo implements Parcelable {
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void readFromXml(XmlPullParser parser) throws XmlPullParserException,
|
||||
IOException {
|
||||
mPackageName = getStringFromXml(parser, ATTR_PACKAGE_NAME, null);
|
||||
@@ -170,6 +181,7 @@ public final class IntentFilterVerificationInfo implements Parcelable {
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void writeToXml(XmlSerializer serializer) throws IOException {
|
||||
serializer.attribute(null, ATTR_PACKAGE_NAME, mPackageName);
|
||||
serializer.attribute(null, ATTR_STATUS, String.valueOf(mMainStatus));
|
||||
@@ -180,10 +192,12 @@ public final class IntentFilterVerificationInfo implements Parcelable {
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public String getStatusString() {
|
||||
return getStatusStringFromValue(((long)mMainStatus) << 32);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public static String getStatusStringFromValue(long val) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
switch ((int)(val >> 32)) {
|
||||
|
||||
@@ -1413,6 +1413,7 @@ public abstract class PackageManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED = 0;
|
||||
|
||||
/**
|
||||
@@ -1423,6 +1424,7 @@ public abstract class PackageManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK = 1;
|
||||
|
||||
/**
|
||||
@@ -1434,6 +1436,7 @@ public abstract class PackageManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS = 2;
|
||||
|
||||
/**
|
||||
@@ -1445,6 +1448,7 @@ public abstract class PackageManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER = 3;
|
||||
|
||||
/**
|
||||
@@ -1458,6 +1462,7 @@ public abstract class PackageManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK = 4;
|
||||
|
||||
/**
|
||||
@@ -4936,6 +4941,7 @@ public abstract class PackageManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public abstract int getIntentVerificationStatusAsUser(String packageName, @UserIdInt int userId);
|
||||
|
||||
/**
|
||||
@@ -4958,6 +4964,7 @@ public abstract class PackageManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public abstract boolean updateIntentVerificationStatusAsUser(String packageName, int status,
|
||||
@UserIdInt int userId);
|
||||
|
||||
@@ -4973,6 +4980,7 @@ public abstract class PackageManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public abstract List<IntentFilterVerificationInfo> getIntentFilterVerifications(
|
||||
String packageName);
|
||||
|
||||
@@ -4987,6 +4995,7 @@ public abstract class PackageManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public abstract List<IntentFilter> getAllIntentFilters(String packageName);
|
||||
|
||||
/**
|
||||
@@ -5000,6 +5009,7 @@ public abstract class PackageManager {
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
@SystemApi
|
||||
public abstract String getDefaultBrowserPackageNameAsUser(@UserIdInt int userId);
|
||||
|
||||
/**
|
||||
@@ -5014,6 +5024,7 @@ public abstract class PackageManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public abstract boolean setDefaultBrowserPackageNameAsUser(String packageName,
|
||||
@UserIdInt int userId);
|
||||
|
||||
|
||||
@@ -1953,7 +1953,7 @@
|
||||
{@link android.content.pm.PackageManager#addPackageToPreferred}
|
||||
for details. -->
|
||||
<permission android:name="android.permission.SET_PREFERRED_APPLICATIONS"
|
||||
android:protectionLevel="signature" />
|
||||
android:protectionLevel="signature|verifier" />
|
||||
|
||||
<!-- Allows an application to receive the
|
||||
{@link android.content.Intent#ACTION_BOOT_COMPLETED} that is
|
||||
|
||||
Reference in New Issue
Block a user