diff options
author | Christopher Tate <ctate@google.com> | 2015-07-10 17:44:53 -0700 |
---|---|---|
committer | Christopher Tate <ctate@google.com> | 2015-07-13 17:01:14 -0700 |
commit | f0d6cb38c47ee37583034dc3a68238ed13c91742 (patch) | |
tree | 697334197a4e363bccb6561029bbda7f6adb695a /core/java/android/content/pm | |
parent | c09544bb88ada53494d4a955d0450a22985b4799 (diff) | |
download | frameworks_base-f0d6cb38c47ee37583034dc3a68238ed13c91742.zip frameworks_base-f0d6cb38c47ee37583034dc3a68238ed13c91742.tar.gz frameworks_base-f0d6cb38c47ee37583034dc3a68238ed13c91742.tar.bz2 |
Prioritize most-recently-enabled link-handling app
In the case when multiple apps handle a given web-link action,
all of which have been marked as "launch the app instead of a
browser" and so are otherwise ambiguous, always prefer the app
that was most recently placed into the always-handle-links state.
Bug 22051035
Change-Id: I3f43c19b0d7b74e9843445e41971bb5433affb1c
Diffstat (limited to 'core/java/android/content/pm')
-rw-r--r-- | core/java/android/content/pm/IntentFilterVerificationInfo.java | 28 | ||||
-rw-r--r-- | core/java/android/content/pm/PackageUserState.java | 2 |
2 files changed, 24 insertions, 6 deletions
diff --git a/core/java/android/content/pm/IntentFilterVerificationInfo.java b/core/java/android/content/pm/IntentFilterVerificationInfo.java index 96000dd..4dbac05 100644 --- a/core/java/android/content/pm/IntentFilterVerificationInfo.java +++ b/core/java/android/content/pm/IntentFilterVerificationInfo.java @@ -26,7 +26,9 @@ 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; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; @@ -181,14 +183,28 @@ public final class IntentFilterVerificationInfo implements Parcelable { return getStatusStringFromValue(mMainStatus); } - public static String getStatusStringFromValue(int val) { - switch (val) { - case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK : return "ask"; - case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS : return "always"; - case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER : return "never"; + public static String getStatusStringFromValue(long val) { + StringBuilder sb = new StringBuilder(); + switch ((int)(val >> 32)) { + case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS: + sb.append("always : "); + sb.append(Long.toHexString(val & 0x00000000FFFFFFFF)); + break; + + case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK: + sb.append("ask"); + break; + + case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER: + sb.append("never"); + break; + + case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED: default: - case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED : return "undefined"; + sb.append("undefined"); + break; } + return sb.toString(); } @Override diff --git a/core/java/android/content/pm/PackageUserState.java b/core/java/android/content/pm/PackageUserState.java index 92b8055..9b28401 100644 --- a/core/java/android/content/pm/PackageUserState.java +++ b/core/java/android/content/pm/PackageUserState.java @@ -38,6 +38,7 @@ public class PackageUserState { public ArraySet<String> enabledComponents; public int domainVerificationStatus; + public int appLinkGeneration; public PackageUserState() { installed = true; @@ -60,5 +61,6 @@ public class PackageUserState { ? new ArraySet<>(o.enabledComponents) : null; blockUninstall = o.blockUninstall; domainVerificationStatus = o.domainVerificationStatus; + appLinkGeneration = o.appLinkGeneration; } } |