Loading api/current.txt +24 −0 Original line number Diff line number Diff line Loading @@ -330,6 +330,7 @@ package android { field public static final int autoStart = 16843445; // 0x10102b5 field public static final deprecated int autoText = 16843114; // 0x101016a field public static final int autoUrlDetect = 16843404; // 0x101028c field public static final int autoVerify = 16844010; // 0x10104ea field public static final int background = 16842964; // 0x10100d4 field public static final int backgroundDimAmount = 16842802; // 0x1010032 field public static final int backgroundDimEnabled = 16843295; // 0x101021f Loading Loading @@ -8253,6 +8254,8 @@ package android.content { field public static final int NO_MATCH_CATEGORY = -4; // 0xfffffffc field public static final int NO_MATCH_DATA = -2; // 0xfffffffe field public static final int NO_MATCH_TYPE = -1; // 0xffffffff field public static final java.lang.String SCHEME_HTTP = "http"; field public static final java.lang.String SCHEME_HTTPS = "https"; field public static final int SYSTEM_HIGH_PRIORITY = 1000; // 0x3e8 field public static final int SYSTEM_LOW_PRIORITY = -1000; // 0xfffffc18 } Loading Loading @@ -8832,6 +8835,25 @@ package android.content.pm { field public java.lang.String targetPackage; } public final class IntentFilterVerificationInfo implements android.os.Parcelable { ctor public IntentFilterVerificationInfo(); ctor public IntentFilterVerificationInfo(java.lang.String, java.lang.String[]); ctor public IntentFilterVerificationInfo(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; ctor public IntentFilterVerificationInfo(android.os.Parcel); method public int describeContents(); method public java.lang.String[] getDomains(); method public java.lang.String getDomainsString(); method public java.lang.String getPackageName(); method public int getStatus(); method public java.lang.String getStatusString(); method public static java.lang.String getStatusStringFromValue(int); method public void readFromXml(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public void setStatus(int); method public void writeToParcel(android.os.Parcel, int); method public void writeToXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException; 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); Loading Loading @@ -9060,6 +9082,7 @@ package android.content.pm { method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(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 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); Loading Loading @@ -30486,6 +30509,7 @@ package android.test.mock { method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(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 android.content.Intent getLaunchIntentForPackage(java.lang.String); method public android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String); method public java.lang.String getNameForUid(int); api/system-current.txt +26 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ package android { field public static final java.lang.String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER"; field public static final java.lang.String INSTALL_PACKAGES = "android.permission.INSTALL_PACKAGES"; field public static final java.lang.String INSTALL_SHORTCUT = "com.android.launcher.permission.INSTALL_SHORTCUT"; field public static final java.lang.String INTENT_FILTER_VERIFICATION_AGENT = "android.permission.INTENT_FILTER_VERIFICATION_AGENT"; field public static final java.lang.String INTERACT_ACROSS_USERS = "android.permission.INTERACT_ACROSS_USERS"; field public static final java.lang.String INTERNAL_SYSTEM_WINDOW = "android.permission.INTERNAL_SYSTEM_WINDOW"; field public static final java.lang.String INTERNET = "android.permission.INTERNET"; Loading Loading @@ -401,6 +402,7 @@ package android { field public static final int autoStart = 16843445; // 0x10102b5 field public static final deprecated int autoText = 16843114; // 0x101016a field public static final int autoUrlDetect = 16843404; // 0x101028c field public static final int autoVerify = 16844010; // 0x10104ea field public static final int background = 16842964; // 0x10100d4 field public static final int backgroundDimAmount = 16842802; // 0x1010032 field public static final int backgroundDimEnabled = 16843295; // 0x101021f Loading Loading @@ -8175,6 +8177,7 @@ package android.content { field public static final java.lang.String ACTION_INSERT = "android.intent.action.INSERT"; field public static final java.lang.String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT"; field public static final java.lang.String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE"; field public static final java.lang.String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION"; field public static final java.lang.String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED"; field public static final java.lang.String ACTION_MAIN = "android.intent.action.MAIN"; field public static final java.lang.String ACTION_MANAGED_PROFILE_ADDED = "android.intent.action.MANAGED_PROFILE_ADDED"; Loading Loading @@ -8472,6 +8475,8 @@ package android.content { field public static final int NO_MATCH_CATEGORY = -4; // 0xfffffffc field public static final int NO_MATCH_DATA = -2; // 0xfffffffe field public static final int NO_MATCH_TYPE = -1; // 0xffffffff field public static final java.lang.String SCHEME_HTTP = "http"; field public static final java.lang.String SCHEME_HTTPS = "https"; field public static final int SYSTEM_HIGH_PRIORITY = 1000; // 0x3e8 field public static final int SYSTEM_LOW_PRIORITY = -1000; // 0xfffffc18 } Loading Loading @@ -9070,6 +9075,25 @@ package android.content.pm { field public java.lang.String targetPackage; } public final class IntentFilterVerificationInfo implements android.os.Parcelable { ctor public IntentFilterVerificationInfo(); ctor public IntentFilterVerificationInfo(java.lang.String, java.lang.String[]); ctor public IntentFilterVerificationInfo(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; ctor public IntentFilterVerificationInfo(android.os.Parcel); method public int describeContents(); method public java.lang.String[] getDomains(); method public java.lang.String getDomainsString(); method public java.lang.String getPackageName(); method public int getStatus(); method public java.lang.String getStatusString(); method public static java.lang.String getStatusStringFromValue(int); method public void readFromXml(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public void setStatus(int); method public void writeToParcel(android.os.Parcel, int); method public void writeToXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException; 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); Loading Loading @@ -9304,6 +9328,7 @@ package android.content.pm { method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(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 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); Loading Loading @@ -33023,6 +33048,7 @@ package android.test.mock { method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(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 android.content.Intent getLaunchIntentForPackage(java.lang.String); method public android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String); method public java.lang.String getNameForUid(int); core/java/android/app/ApplicationPackageManager.java +40 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.content.pm.IPackageManager; import android.content.pm.IPackageMoveObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.InstrumentationInfo; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.KeySet; import android.content.pm.ManifestDigest; import android.content.pm.PackageInfo; Loading Loading @@ -1308,6 +1309,45 @@ final class ApplicationPackageManager extends PackageManager { } } @Override public void verifyIntentFilter(int id, int verificationCode, List<String> outFailedDomains) { try { mPM.verifyIntentFilter(id, verificationCode, outFailedDomains); } catch (RemoteException e) { // Should never happen! } } @Override public int getIntentVerificationStatus(String packageName, int userId) { try { return mPM.getIntentVerificationStatus(packageName, userId); } catch (RemoteException e) { // Should never happen! return PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; } } @Override public boolean updateIntentVerificationStatus(String packageName, int status, int userId) { try { return mPM.updateIntentVerificationStatus(packageName, status, userId); } catch (RemoteException e) { // Should never happen! return false; } } @Override public List<IntentFilterVerificationInfo> getIntentFilterVerifications(String packageName) { try { return mPM.getIntentFilterVerifications(packageName); } catch (RemoteException e) { // Should never happen! return null; } } @Override public void setInstallerPackageName(String targetPackage, String installerPackageName) { Loading core/java/android/content/Intent.java +13 −0 Original line number Diff line number Diff line Loading @@ -1910,6 +1910,19 @@ public class Intent implements Parcelable, Cloneable { @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED"; /** * Broadcast Action: Sent to the system intent filter verifier when an intent filter * needs to be verified. The data contains the filter data hosts to be verified against. * <p class="note"> * This is a protected intent that can only be sent by the system. * </p> * * @hide */ @SystemApi @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION"; /** * Broadcast Action: Resources for a set of packages (which were * previously unavailable) are currently Loading core/java/android/content/IntentFilter.java +147 −1 Original line number Diff line number Diff line Loading @@ -16,10 +16,12 @@ package android.content; import android.content.pm.PackageParser; import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; import android.os.PatternMatcher; import android.text.TextUtils; import android.util.AndroidException; import android.util.Log; import android.util.Printer; Loading Loading @@ -150,6 +152,7 @@ public class IntentFilter implements Parcelable { private static final String CAT_STR = "cat"; private static final String NAME_STR = "name"; private static final String ACTION_STR = "action"; private static final String AUTO_VERIFY_STR = "autoVerify"; /** * The filter {@link #setPriority} value at which system high-priority Loading Loading @@ -247,6 +250,19 @@ public class IntentFilter implements Parcelable { */ public static final int NO_MATCH_CATEGORY = -4; /** * HTTP scheme. * * @see #addDataScheme(String) */ public static final String SCHEME_HTTP = "http"; /** * HTTPS scheme. * * @see #addDataScheme(String) */ public static final String SCHEME_HTTPS = "https"; private int mPriority; private final ArrayList<String> mActions; private ArrayList<String> mCategories = null; Loading @@ -257,6 +273,13 @@ public class IntentFilter implements Parcelable { private ArrayList<String> mDataTypes = null; private boolean mHasPartialTypes = false; private static final int STATE_VERIFY_AUTO = 0x00000001; private static final int STATE_NEED_VERIFY = 0x00000010; private static final int STATE_NEED_VERIFY_CHECKED = 0x00000100; private static final int STATE_VERIFIED = 0x00001000; private int mVerifyState; // These functions are the start of more optimized code for managing // the string sets... not yet implemented. Loading Loading @@ -326,7 +349,7 @@ public class IntentFilter implements Parcelable { public MalformedMimeTypeException(String name) { super(name); } }; } /** * Create a new IntentFilter instance with a specified action and MIME Loading Loading @@ -421,6 +444,7 @@ public class IntentFilter implements Parcelable { mDataPaths = new ArrayList<PatternMatcher>(o.mDataPaths); } mHasPartialTypes = o.mHasPartialTypes; mVerifyState = o.mVerifyState; } /** Loading Loading @@ -451,6 +475,94 @@ public class IntentFilter implements Parcelable { return mPriority; } /** * Set whether this filter will needs to be automatically verified against its data URIs or not. * The default is false. * * The verification would need to happen only and only if the Intent action is * {@link android.content.Intent#ACTION_VIEW} and the Intent category is * {@link android.content.Intent#CATEGORY_BROWSABLE} and the Intent data scheme * is "http" or "https". * * True means that the filter will need to use its data URIs to be verified. * * @param autoVerify The new autoVerify value. * * @see #getAutoVerify() * @see #addAction(String) * @see #getAction(int) * @see #addCategory(String) * @see #getCategory(int) * @see #addDataScheme(String) * @see #getDataScheme(int) * * @hide */ public final void setAutoVerify(boolean autoVerify) { mVerifyState &= ~STATE_VERIFY_AUTO; if (autoVerify) mVerifyState |= STATE_VERIFY_AUTO; } /** * Return if this filter will needs to be automatically verified again its data URIs or not. * * @return True if the filter will needs to be automatically verified. False otherwise. * * @see #setAutoVerify(boolean) * * @hide */ public final boolean getAutoVerify() { return ((mVerifyState & STATE_VERIFY_AUTO) == 1); } /** * Return if this filter needs to be automatically verified again its data URIs or not. * * @return True if the filter needs to be automatically verified. False otherwise. * * This will check if if the Intent action is {@link android.content.Intent#ACTION_VIEW} and * the Intent category is {@link android.content.Intent#CATEGORY_BROWSABLE} and the Intent * data scheme is "http" or "https". * * @see #setAutoVerify(boolean) * * @hide */ public final boolean needsVerification() { return hasAction(Intent.ACTION_VIEW) && hasCategory(Intent.CATEGORY_BROWSABLE) && (hasDataScheme(SCHEME_HTTP) || hasDataScheme(SCHEME_HTTPS)) && getAutoVerify(); } /** * Return if this filter has been verified * * @return true if the filter has been verified or if autoVerify is false. * * @hide */ public final boolean isVerified() { if ((mVerifyState & STATE_NEED_VERIFY_CHECKED) == STATE_NEED_VERIFY_CHECKED) { return ((mVerifyState & STATE_NEED_VERIFY) == STATE_NEED_VERIFY); } return false; } /** * Set if this filter has been verified * * @param verified true if this filter has been verified. False otherwise. * * @hide */ public void setVerified(boolean verified) { mVerifyState |= STATE_NEED_VERIFY_CHECKED; mVerifyState &= ~STATE_VERIFIED; if (verified) mVerifyState |= STATE_VERIFIED; } /** * Add a new Intent action to match against. If any actions are included * in the filter, then an Intent's action must be one of those values for Loading Loading @@ -1333,6 +1445,7 @@ public class IntentFilter implements Parcelable { * Write the contents of the IntentFilter as an XML stream. */ public void writeToXml(XmlSerializer serializer) throws IOException { serializer.attribute(null, AUTO_VERIFY_STR, Boolean.toString(getAutoVerify())); int N = countActions(); for (int i=0; i<N; i++) { serializer.startTag(null, ACTION_STR); Loading Loading @@ -1407,6 +1520,9 @@ public class IntentFilter implements Parcelable { public void readFromXml(XmlPullParser parser) throws XmlPullParserException, IOException { String autoVerify = parser.getAttributeValue(null, AUTO_VERIFY_STR); setAutoVerify(TextUtils.isEmpty(autoVerify) ? false : Boolean.getBoolean(autoVerify)); int outerDepth = parser.getDepth(); int type; while ((type=parser.next()) != XmlPullParser.END_DOCUMENT Loading Loading @@ -1548,6 +1664,11 @@ public class IntentFilter implements Parcelable { sb.append(", mHasPartialTypes="); sb.append(mHasPartialTypes); du.println(sb.toString()); } { sb.setLength(0); sb.append(prefix); sb.append("AutoVerify="); sb.append(getAutoVerify()); du.println(sb.toString()); } } public static final Parcelable.Creator<IntentFilter> CREATOR Loading Loading @@ -1614,6 +1735,7 @@ public class IntentFilter implements Parcelable { } dest.writeInt(mPriority); dest.writeInt(mHasPartialTypes ? 1 : 0); dest.writeInt(getAutoVerify() ? 1 : 0); } /** Loading Loading @@ -1680,6 +1802,7 @@ public class IntentFilter implements Parcelable { } mPriority = source.readInt(); mHasPartialTypes = source.readInt() > 0; setAutoVerify(source.readInt() > 0); } private final boolean findMimeType(String type) { Loading Loading @@ -1724,4 +1847,27 @@ public class IntentFilter implements Parcelable { return false; } /** * @hide */ public ArrayList<String> getHostsList() { ArrayList<String> result = new ArrayList<>(); Iterator<IntentFilter.AuthorityEntry> it = authoritiesIterator(); if (it != null) { while (it.hasNext()) { IntentFilter.AuthorityEntry entry = it.next(); result.add(entry.getHost()); } } return result; } /** * @hide */ public String[] getHosts() { ArrayList<String> list = getHostsList(); return list.toArray(new String[list.size()]); } } Loading
api/current.txt +24 −0 Original line number Diff line number Diff line Loading @@ -330,6 +330,7 @@ package android { field public static final int autoStart = 16843445; // 0x10102b5 field public static final deprecated int autoText = 16843114; // 0x101016a field public static final int autoUrlDetect = 16843404; // 0x101028c field public static final int autoVerify = 16844010; // 0x10104ea field public static final int background = 16842964; // 0x10100d4 field public static final int backgroundDimAmount = 16842802; // 0x1010032 field public static final int backgroundDimEnabled = 16843295; // 0x101021f Loading Loading @@ -8253,6 +8254,8 @@ package android.content { field public static final int NO_MATCH_CATEGORY = -4; // 0xfffffffc field public static final int NO_MATCH_DATA = -2; // 0xfffffffe field public static final int NO_MATCH_TYPE = -1; // 0xffffffff field public static final java.lang.String SCHEME_HTTP = "http"; field public static final java.lang.String SCHEME_HTTPS = "https"; field public static final int SYSTEM_HIGH_PRIORITY = 1000; // 0x3e8 field public static final int SYSTEM_LOW_PRIORITY = -1000; // 0xfffffc18 } Loading Loading @@ -8832,6 +8835,25 @@ package android.content.pm { field public java.lang.String targetPackage; } public final class IntentFilterVerificationInfo implements android.os.Parcelable { ctor public IntentFilterVerificationInfo(); ctor public IntentFilterVerificationInfo(java.lang.String, java.lang.String[]); ctor public IntentFilterVerificationInfo(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; ctor public IntentFilterVerificationInfo(android.os.Parcel); method public int describeContents(); method public java.lang.String[] getDomains(); method public java.lang.String getDomainsString(); method public java.lang.String getPackageName(); method public int getStatus(); method public java.lang.String getStatusString(); method public static java.lang.String getStatusStringFromValue(int); method public void readFromXml(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public void setStatus(int); method public void writeToParcel(android.os.Parcel, int); method public void writeToXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException; 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); Loading Loading @@ -9060,6 +9082,7 @@ package android.content.pm { method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(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 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); Loading Loading @@ -30486,6 +30509,7 @@ package android.test.mock { method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(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 android.content.Intent getLaunchIntentForPackage(java.lang.String); method public android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String); method public java.lang.String getNameForUid(int);
api/system-current.txt +26 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ package android { field public static final java.lang.String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER"; field public static final java.lang.String INSTALL_PACKAGES = "android.permission.INSTALL_PACKAGES"; field public static final java.lang.String INSTALL_SHORTCUT = "com.android.launcher.permission.INSTALL_SHORTCUT"; field public static final java.lang.String INTENT_FILTER_VERIFICATION_AGENT = "android.permission.INTENT_FILTER_VERIFICATION_AGENT"; field public static final java.lang.String INTERACT_ACROSS_USERS = "android.permission.INTERACT_ACROSS_USERS"; field public static final java.lang.String INTERNAL_SYSTEM_WINDOW = "android.permission.INTERNAL_SYSTEM_WINDOW"; field public static final java.lang.String INTERNET = "android.permission.INTERNET"; Loading Loading @@ -401,6 +402,7 @@ package android { field public static final int autoStart = 16843445; // 0x10102b5 field public static final deprecated int autoText = 16843114; // 0x101016a field public static final int autoUrlDetect = 16843404; // 0x101028c field public static final int autoVerify = 16844010; // 0x10104ea field public static final int background = 16842964; // 0x10100d4 field public static final int backgroundDimAmount = 16842802; // 0x1010032 field public static final int backgroundDimEnabled = 16843295; // 0x101021f Loading Loading @@ -8175,6 +8177,7 @@ package android.content { field public static final java.lang.String ACTION_INSERT = "android.intent.action.INSERT"; field public static final java.lang.String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT"; field public static final java.lang.String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE"; field public static final java.lang.String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION"; field public static final java.lang.String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED"; field public static final java.lang.String ACTION_MAIN = "android.intent.action.MAIN"; field public static final java.lang.String ACTION_MANAGED_PROFILE_ADDED = "android.intent.action.MANAGED_PROFILE_ADDED"; Loading Loading @@ -8472,6 +8475,8 @@ package android.content { field public static final int NO_MATCH_CATEGORY = -4; // 0xfffffffc field public static final int NO_MATCH_DATA = -2; // 0xfffffffe field public static final int NO_MATCH_TYPE = -1; // 0xffffffff field public static final java.lang.String SCHEME_HTTP = "http"; field public static final java.lang.String SCHEME_HTTPS = "https"; field public static final int SYSTEM_HIGH_PRIORITY = 1000; // 0x3e8 field public static final int SYSTEM_LOW_PRIORITY = -1000; // 0xfffffc18 } Loading Loading @@ -9070,6 +9075,25 @@ package android.content.pm { field public java.lang.String targetPackage; } public final class IntentFilterVerificationInfo implements android.os.Parcelable { ctor public IntentFilterVerificationInfo(); ctor public IntentFilterVerificationInfo(java.lang.String, java.lang.String[]); ctor public IntentFilterVerificationInfo(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; ctor public IntentFilterVerificationInfo(android.os.Parcel); method public int describeContents(); method public java.lang.String[] getDomains(); method public java.lang.String getDomainsString(); method public java.lang.String getPackageName(); method public int getStatus(); method public java.lang.String getStatusString(); method public static java.lang.String getStatusStringFromValue(int); method public void readFromXml(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public void setStatus(int); method public void writeToParcel(android.os.Parcel, int); method public void writeToXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException; 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); Loading Loading @@ -9304,6 +9328,7 @@ package android.content.pm { method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(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 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); Loading Loading @@ -33023,6 +33048,7 @@ package android.test.mock { method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(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 android.content.Intent getLaunchIntentForPackage(java.lang.String); method public android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String); method public java.lang.String getNameForUid(int);
core/java/android/app/ApplicationPackageManager.java +40 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.content.pm.IPackageManager; import android.content.pm.IPackageMoveObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.InstrumentationInfo; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.KeySet; import android.content.pm.ManifestDigest; import android.content.pm.PackageInfo; Loading Loading @@ -1308,6 +1309,45 @@ final class ApplicationPackageManager extends PackageManager { } } @Override public void verifyIntentFilter(int id, int verificationCode, List<String> outFailedDomains) { try { mPM.verifyIntentFilter(id, verificationCode, outFailedDomains); } catch (RemoteException e) { // Should never happen! } } @Override public int getIntentVerificationStatus(String packageName, int userId) { try { return mPM.getIntentVerificationStatus(packageName, userId); } catch (RemoteException e) { // Should never happen! return PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; } } @Override public boolean updateIntentVerificationStatus(String packageName, int status, int userId) { try { return mPM.updateIntentVerificationStatus(packageName, status, userId); } catch (RemoteException e) { // Should never happen! return false; } } @Override public List<IntentFilterVerificationInfo> getIntentFilterVerifications(String packageName) { try { return mPM.getIntentFilterVerifications(packageName); } catch (RemoteException e) { // Should never happen! return null; } } @Override public void setInstallerPackageName(String targetPackage, String installerPackageName) { Loading
core/java/android/content/Intent.java +13 −0 Original line number Diff line number Diff line Loading @@ -1910,6 +1910,19 @@ public class Intent implements Parcelable, Cloneable { @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED"; /** * Broadcast Action: Sent to the system intent filter verifier when an intent filter * needs to be verified. The data contains the filter data hosts to be verified against. * <p class="note"> * This is a protected intent that can only be sent by the system. * </p> * * @hide */ @SystemApi @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION"; /** * Broadcast Action: Resources for a set of packages (which were * previously unavailable) are currently Loading
core/java/android/content/IntentFilter.java +147 −1 Original line number Diff line number Diff line Loading @@ -16,10 +16,12 @@ package android.content; import android.content.pm.PackageParser; import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; import android.os.PatternMatcher; import android.text.TextUtils; import android.util.AndroidException; import android.util.Log; import android.util.Printer; Loading Loading @@ -150,6 +152,7 @@ public class IntentFilter implements Parcelable { private static final String CAT_STR = "cat"; private static final String NAME_STR = "name"; private static final String ACTION_STR = "action"; private static final String AUTO_VERIFY_STR = "autoVerify"; /** * The filter {@link #setPriority} value at which system high-priority Loading Loading @@ -247,6 +250,19 @@ public class IntentFilter implements Parcelable { */ public static final int NO_MATCH_CATEGORY = -4; /** * HTTP scheme. * * @see #addDataScheme(String) */ public static final String SCHEME_HTTP = "http"; /** * HTTPS scheme. * * @see #addDataScheme(String) */ public static final String SCHEME_HTTPS = "https"; private int mPriority; private final ArrayList<String> mActions; private ArrayList<String> mCategories = null; Loading @@ -257,6 +273,13 @@ public class IntentFilter implements Parcelable { private ArrayList<String> mDataTypes = null; private boolean mHasPartialTypes = false; private static final int STATE_VERIFY_AUTO = 0x00000001; private static final int STATE_NEED_VERIFY = 0x00000010; private static final int STATE_NEED_VERIFY_CHECKED = 0x00000100; private static final int STATE_VERIFIED = 0x00001000; private int mVerifyState; // These functions are the start of more optimized code for managing // the string sets... not yet implemented. Loading Loading @@ -326,7 +349,7 @@ public class IntentFilter implements Parcelable { public MalformedMimeTypeException(String name) { super(name); } }; } /** * Create a new IntentFilter instance with a specified action and MIME Loading Loading @@ -421,6 +444,7 @@ public class IntentFilter implements Parcelable { mDataPaths = new ArrayList<PatternMatcher>(o.mDataPaths); } mHasPartialTypes = o.mHasPartialTypes; mVerifyState = o.mVerifyState; } /** Loading Loading @@ -451,6 +475,94 @@ public class IntentFilter implements Parcelable { return mPriority; } /** * Set whether this filter will needs to be automatically verified against its data URIs or not. * The default is false. * * The verification would need to happen only and only if the Intent action is * {@link android.content.Intent#ACTION_VIEW} and the Intent category is * {@link android.content.Intent#CATEGORY_BROWSABLE} and the Intent data scheme * is "http" or "https". * * True means that the filter will need to use its data URIs to be verified. * * @param autoVerify The new autoVerify value. * * @see #getAutoVerify() * @see #addAction(String) * @see #getAction(int) * @see #addCategory(String) * @see #getCategory(int) * @see #addDataScheme(String) * @see #getDataScheme(int) * * @hide */ public final void setAutoVerify(boolean autoVerify) { mVerifyState &= ~STATE_VERIFY_AUTO; if (autoVerify) mVerifyState |= STATE_VERIFY_AUTO; } /** * Return if this filter will needs to be automatically verified again its data URIs or not. * * @return True if the filter will needs to be automatically verified. False otherwise. * * @see #setAutoVerify(boolean) * * @hide */ public final boolean getAutoVerify() { return ((mVerifyState & STATE_VERIFY_AUTO) == 1); } /** * Return if this filter needs to be automatically verified again its data URIs or not. * * @return True if the filter needs to be automatically verified. False otherwise. * * This will check if if the Intent action is {@link android.content.Intent#ACTION_VIEW} and * the Intent category is {@link android.content.Intent#CATEGORY_BROWSABLE} and the Intent * data scheme is "http" or "https". * * @see #setAutoVerify(boolean) * * @hide */ public final boolean needsVerification() { return hasAction(Intent.ACTION_VIEW) && hasCategory(Intent.CATEGORY_BROWSABLE) && (hasDataScheme(SCHEME_HTTP) || hasDataScheme(SCHEME_HTTPS)) && getAutoVerify(); } /** * Return if this filter has been verified * * @return true if the filter has been verified or if autoVerify is false. * * @hide */ public final boolean isVerified() { if ((mVerifyState & STATE_NEED_VERIFY_CHECKED) == STATE_NEED_VERIFY_CHECKED) { return ((mVerifyState & STATE_NEED_VERIFY) == STATE_NEED_VERIFY); } return false; } /** * Set if this filter has been verified * * @param verified true if this filter has been verified. False otherwise. * * @hide */ public void setVerified(boolean verified) { mVerifyState |= STATE_NEED_VERIFY_CHECKED; mVerifyState &= ~STATE_VERIFIED; if (verified) mVerifyState |= STATE_VERIFIED; } /** * Add a new Intent action to match against. If any actions are included * in the filter, then an Intent's action must be one of those values for Loading Loading @@ -1333,6 +1445,7 @@ public class IntentFilter implements Parcelable { * Write the contents of the IntentFilter as an XML stream. */ public void writeToXml(XmlSerializer serializer) throws IOException { serializer.attribute(null, AUTO_VERIFY_STR, Boolean.toString(getAutoVerify())); int N = countActions(); for (int i=0; i<N; i++) { serializer.startTag(null, ACTION_STR); Loading Loading @@ -1407,6 +1520,9 @@ public class IntentFilter implements Parcelable { public void readFromXml(XmlPullParser parser) throws XmlPullParserException, IOException { String autoVerify = parser.getAttributeValue(null, AUTO_VERIFY_STR); setAutoVerify(TextUtils.isEmpty(autoVerify) ? false : Boolean.getBoolean(autoVerify)); int outerDepth = parser.getDepth(); int type; while ((type=parser.next()) != XmlPullParser.END_DOCUMENT Loading Loading @@ -1548,6 +1664,11 @@ public class IntentFilter implements Parcelable { sb.append(", mHasPartialTypes="); sb.append(mHasPartialTypes); du.println(sb.toString()); } { sb.setLength(0); sb.append(prefix); sb.append("AutoVerify="); sb.append(getAutoVerify()); du.println(sb.toString()); } } public static final Parcelable.Creator<IntentFilter> CREATOR Loading Loading @@ -1614,6 +1735,7 @@ public class IntentFilter implements Parcelable { } dest.writeInt(mPriority); dest.writeInt(mHasPartialTypes ? 1 : 0); dest.writeInt(getAutoVerify() ? 1 : 0); } /** Loading Loading @@ -1680,6 +1802,7 @@ public class IntentFilter implements Parcelable { } mPriority = source.readInt(); mHasPartialTypes = source.readInt() > 0; setAutoVerify(source.readInt() > 0); } private final boolean findMimeType(String type) { Loading Loading @@ -1724,4 +1847,27 @@ public class IntentFilter implements Parcelable { return false; } /** * @hide */ public ArrayList<String> getHostsList() { ArrayList<String> result = new ArrayList<>(); Iterator<IntentFilter.AuthorityEntry> it = authoritiesIterator(); if (it != null) { while (it.hasNext()) { IntentFilter.AuthorityEntry entry = it.next(); result.add(entry.getHost()); } } return result; } /** * @hide */ public String[] getHosts() { ArrayList<String> list = getHostsList(); return list.toArray(new String[list.size()]); } }