summaryrefslogtreecommitdiffstats
path: root/services/java/com
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2013-11-04 17:02:10 -0800
committerChristopher Tate <ctate@google.com>2013-11-04 17:02:10 -0800
commit2298ef2f7f89d7a5cab6ef4790d8cbdb189e73e9 (patch)
tree570528acac38f61740ae3ffd554bfd7ca93c0dfd /services/java/com
parent6ce161d1762a1c74b1ed6931c1d54f1f553267b0 (diff)
downloadframeworks_base-2298ef2f7f89d7a5cab6ef4790d8cbdb189e73e9.zip
frameworks_base-2298ef2f7f89d7a5cab6ef4790d8cbdb189e73e9.tar.gz
frameworks_base-2298ef2f7f89d7a5cab6ef4790d8cbdb189e73e9.tar.bz2
Extend preferred-app preload support for complex resolutions
Support factory defaults that involve specific type+scheme matching. Bug 11372979 Change-Id: I0d68937797d6b4bc996a8707a7cd21491a3aae3b
Diffstat (limited to 'services/java/com')
-rw-r--r--services/java/com/android/server/pm/Settings.java26
1 files changed, 22 insertions, 4 deletions
diff --git a/services/java/com/android/server/pm/Settings.java b/services/java/com/android/server/pm/Settings.java
index d3ccba6..0079b54 100644
--- a/services/java/com/android/server/pm/Settings.java
+++ b/services/java/com/android/server/pm/Settings.java
@@ -1959,10 +1959,14 @@ final class Settings {
}
boolean doNonData = true;
+ boolean hasSchemes = false;
for (int ischeme=0; ischeme<tmpPa.countDataSchemes(); ischeme++) {
boolean doScheme = true;
String scheme = tmpPa.getDataScheme(ischeme);
+ if (scheme != null && !scheme.isEmpty()) {
+ hasSchemes = true;
+ }
for (int issp=0; issp<tmpPa.countDataSchemeSpecificParts(); issp++) {
Uri.Builder builder = new Uri.Builder();
builder.scheme(scheme);
@@ -2016,11 +2020,25 @@ final class Settings {
}
for (int idata=0; idata<tmpPa.countDataTypes(); idata++) {
- Intent finalIntent = new Intent(intent);
String mimeType = tmpPa.getDataType(idata);
- finalIntent.setType(mimeType);
- applyDefaultPreferredActivityLPw(service, finalIntent, flags, cn,
- null, null, null, null, mimeType, userId);
+ if (hasSchemes) {
+ Uri.Builder builder = new Uri.Builder();
+ for (int ischeme=0; ischeme<tmpPa.countDataSchemes(); ischeme++) {
+ String scheme = tmpPa.getDataScheme(ischeme);
+ if (scheme != null && !scheme.isEmpty()) {
+ Intent finalIntent = new Intent(intent);
+ builder.scheme(scheme);
+ finalIntent.setDataAndType(builder.build(), mimeType);
+ applyDefaultPreferredActivityLPw(service, finalIntent, flags, cn,
+ scheme, null, null, null, mimeType, userId);
+ }
+ }
+ } else {
+ Intent finalIntent = new Intent(intent);
+ finalIntent.setType(mimeType);
+ applyDefaultPreferredActivityLPw(service, finalIntent, flags, cn,
+ null, null, null, null, mimeType, userId);
+ }
doNonData = false;
}