diff options
Diffstat (limited to 'core/java/android')
4 files changed, 43 insertions, 15 deletions
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 10dcd85..ffdc81d 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -1349,6 +1349,16 @@ final class ApplicationPackageManager extends PackageManager { } @Override + public List<IntentFilter> getAllIntentFilters(String packageName) { + try { + return mPM.getAllIntentFilters(packageName); + } catch (RemoteException e) { + // Should never happen! + return null; + } + } + + @Override public void setInstallerPackageName(String targetPackage, String installerPackageName) { try { diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index eed0df5..55c990f 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -448,6 +448,7 @@ interface IPackageManager { int getIntentVerificationStatus(String packageName, int userId); boolean updateIntentVerificationStatus(String packageName, int status, int userId); List<IntentFilterVerificationInfo> getIntentFilterVerifications(String packageName); + List<IntentFilter> getAllIntentFilters(String packageName); VerifierDeviceIdentity getVerifierDeviceIdentity(); diff --git a/core/java/android/content/pm/IntentFilterVerificationInfo.java b/core/java/android/content/pm/IntentFilterVerificationInfo.java index 60cb4a8..28cbaa8 100644 --- a/core/java/android/content/pm/IntentFilterVerificationInfo.java +++ b/core/java/android/content/pm/IntentFilterVerificationInfo.java @@ -24,6 +24,7 @@ import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATIO import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; +import android.util.ArraySet; import android.util.Log; import com.android.internal.util.XmlUtils; import org.xmlpull.v1.XmlPullParser; @@ -47,17 +48,17 @@ public final class IntentFilterVerificationInfo implements Parcelable { private static final String ATTR_PACKAGE_NAME = "packageName"; private static final String ATTR_STATUS = "status"; - private String[] mDomains; + private ArrayList<String> mDomains; private String mPackageName; private int mMainStatus; public IntentFilterVerificationInfo() { mPackageName = null; - mDomains = new String[0]; + mDomains = new ArrayList<>(); mMainStatus = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; } - public IntentFilterVerificationInfo(String packageName, String[] domains) { + public IntentFilterVerificationInfo(String packageName, ArrayList<String> domains) { mPackageName = packageName; mDomains = domains; mMainStatus = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; @@ -72,10 +73,14 @@ public final class IntentFilterVerificationInfo implements Parcelable { readFromParcel(source); } - public String[] getDomains() { + public ArrayList<String> getDomains() { return mDomains; } + public ArraySet<String> getDomainsSet() { + return new ArraySet<>(mDomains); + } + public String getPackageName() { return mPackageName; } @@ -140,7 +145,7 @@ public final class IntentFilterVerificationInfo implements Parcelable { } mMainStatus = status; - ArrayList<String> list = new ArrayList<>(); + mDomains = new ArrayList<>(); int outerDepth = parser.getDepth(); int type; while ((type=parser.next()) != XmlPullParser.END_DOCUMENT @@ -155,18 +160,13 @@ public final class IntentFilterVerificationInfo implements Parcelable { if (tagName.equals(TAG_DOMAIN)) { String name = getStringFromXml(parser, ATTR_DOMAIN_NAME, null); if (!TextUtils.isEmpty(name)) { - if (list == null) { - list = new ArrayList<>(); - } - list.add(name); + mDomains.add(name); } } else { Log.w(TAG, "Unknown tag parsing IntentFilter: " + tagName); } XmlUtils.skipCurrentTag(parser); } - - mDomains = list.toArray(new String[list.size()]); } public void writeToXml(XmlSerializer serializer) throws IOException { @@ -201,14 +201,15 @@ public final class IntentFilterVerificationInfo implements Parcelable { private void readFromParcel(Parcel source) { mPackageName = source.readString(); mMainStatus = source.readInt(); - mDomains = source.readStringArray(); + mDomains = new ArrayList<>(); + source.readStringList(mDomains); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mPackageName); dest.writeInt(mMainStatus); - dest.writeStringArray(mDomains); + dest.writeStringList(mDomains); } public static final Creator<IntentFilterVerificationInfo> CREATOR = diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 4c99d09..303b709 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -3635,13 +3635,29 @@ public abstract class PackageManager { * @param packageName the package name. When this parameter is set to a non null value, * the results will be filtered by the package name provided. * Otherwise, there will be no filtering and it will return a list - * corresponding for all packages for the provided userId. - * @return a list of IntentFilterVerificationInfo for a specific package and User. + * corresponding for all packages + * + * @return a list of IntentFilterVerificationInfo for a specific package. + * + * @hide */ public abstract List<IntentFilterVerificationInfo> getIntentFilterVerifications( String packageName); /** + * Get the list of IntentFilter for a specific package. + * + * @param packageName the package name. This parameter is set to a non null value, + * the list will contain all the IntentFilter for that package. + * Otherwise, the list will be empty. + * + * @return a list of IntentFilter for a specific package. + * + * @hide + */ + public abstract List<IntentFilter> getAllIntentFilters(String packageName); + + /** * Change the installer associated with a given package. There are limitations * on how the installer package can be changed; in particular: * <ul> |
