summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/Instrumentation.java6
-rw-r--r--core/java/android/content/Intent.java23
2 files changed, 18 insertions, 11 deletions
diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java
index 3c30404..ad2b61f 100644
--- a/core/java/android/app/Instrumentation.java
+++ b/core/java/android/app/Instrumentation.java
@@ -1217,8 +1217,10 @@ public class Instrumentation {
public void callActivityOnNewIntent(Activity activity, ReferrerIntent intent) {
final String oldReferrer = activity.mReferrer;
try {
- activity.mReferrer = intent.mReferrer;
- callActivityOnNewIntent(activity, new Intent(intent));
+ if (intent != null) {
+ activity.mReferrer = intent.mReferrer;
+ }
+ callActivityOnNewIntent(activity, intent != null ? new Intent(intent) : null);
} finally {
activity.mReferrer = oldReferrer;
}
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index de7fbab..5ebbf16 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -4391,7 +4391,7 @@ public class Intent implements Parcelable, Cloneable {
// scheme
else if (uri.startsWith("scheme=", i)) {
if (inSelector) {
- intent.mData = Uri.parse(value);
+ intent.mData = Uri.parse(value + ":");
} else {
scheme = value;
}
@@ -4461,14 +4461,19 @@ public class Intent implements Parcelable, Cloneable {
String authority = null;
intent.mPackage = data.substring(14, end);
int newEnd;
- if (end < data.length() && (newEnd=data.indexOf('/', end+1)) >= 0) {
- // Found a scheme, remember it.
- scheme = data.substring(end+1, newEnd);
- end = newEnd;
- if (end < data.length() && (newEnd=data.indexOf('/', end+1)) >= 0) {
- // Found a authority, remember it.
- authority = data.substring(end+1, newEnd);
+ if ((end+1) < data.length()) {
+ if ((newEnd=data.indexOf('/', end+1)) >= 0) {
+ // Found a scheme, remember it.
+ scheme = data.substring(end+1, newEnd);
end = newEnd;
+ if (end < data.length() && (newEnd=data.indexOf('/', end+1)) >= 0) {
+ // Found a authority, remember it.
+ authority = data.substring(end+1, newEnd);
+ end = newEnd;
+ }
+ } else {
+ // All we have is a scheme.
+ scheme = data.substring(end+1);
}
}
if (scheme == null) {
@@ -7355,7 +7360,7 @@ public class Intent implements Parcelable, Cloneable {
toUriInner(frag, scheme, defAction, defPackage, flags);
if (mSelector != null) {
- uri.append("SEL;");
+ frag.append("SEL;");
// Note that for now we are not going to try to handle the
// data part; not clear how to represent this as a URI, and
// not much utility in it.