summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2013-09-24 14:51:06 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-09-24 14:51:06 -0700
commit23ff9f6128b5d28a99eca87bf03b221145951988 (patch)
tree833a4899b5d5c7c86d7c0fa3c9ceba3bb63e3088 /core/java/android
parente3b71bc910d47bec2d0c805c0bc09c089602e6c1 (diff)
parent9b7d148466b1aedb24187294e0c59718afb104a0 (diff)
am 9b7d1484: am 5f86b90b: Merge "Fix issue #10848916: "Always" button is not working." into klp-dev
* commit '9b7d148466b1aedb24187294e0c59718afb104a0': Fix issue #10848916: "Always" button is not working.
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/content/ComponentName.java52
-rw-r--r--core/java/android/content/pm/PackageParser.java80
-rw-r--r--core/java/android/content/pm/ResolveInfo.java22
3 files changed, 119 insertions, 35 deletions
diff --git a/core/java/android/content/ComponentName.java b/core/java/android/content/ComponentName.java
index 7ca0f01b9869..547a2c3dca10 100644
--- a/core/java/android/content/ComponentName.java
+++ b/core/java/android/content/ComponentName.java
@@ -18,6 +18,8 @@ package android.content;
import android.os.Parcel;
import android.os.Parcelable;
+
+import java.io.PrintWriter;
import java.lang.Comparable;
/**
@@ -109,6 +111,32 @@ public final class ComponentName implements Parcelable, Cloneable, Comparable<Co
return mClass;
}
+ private static void appendShortClassName(StringBuilder sb, String packageName,
+ String className) {
+ if (className.startsWith(packageName)) {
+ int PN = packageName.length();
+ int CN = className.length();
+ if (CN > PN && className.charAt(PN) == '.') {
+ sb.append(className, PN, CN);
+ return;
+ }
+ }
+ sb.append(className);
+ }
+
+ private static void printShortClassName(PrintWriter pw, String packageName,
+ String className) {
+ if (className.startsWith(packageName)) {
+ int PN = packageName.length();
+ int CN = className.length();
+ if (CN > PN && className.charAt(PN) == '.') {
+ pw.write(className, PN, CN-PN);
+ return;
+ }
+ }
+ pw.print(className);
+ }
+
/**
* Return a String that unambiguously describes both the package and
* class names contained in the ComponentName. You can later recover
@@ -137,9 +165,29 @@ public final class ComponentName implements Parcelable, Cloneable, Comparable<Co
* @see #unflattenFromString(String)
*/
public String flattenToShortString() {
- return mPackage + "/" + getShortClassName();
+ StringBuilder sb = new StringBuilder(mPackage.length() + mClass.length());
+ appendShortString(sb, mPackage, mClass);
+ return sb.toString();
}
-
+
+ /** @hide */
+ public void appendShortString(StringBuilder sb) {
+ appendShortString(sb, mPackage, mClass);
+ }
+
+ /** @hide */
+ public static void appendShortString(StringBuilder sb, String packageName, String className) {
+ sb.append(packageName).append('/');
+ appendShortClassName(sb, packageName, className);
+ }
+
+ /** @hide */
+ public static void printShortString(PrintWriter pw, String packageName, String className) {
+ pw.print(packageName);
+ pw.print('/');
+ printShortClassName(pw, packageName, className);
+ }
+
/**
* Recover a ComponentName from a String that was previously created with
* {@link #flattenToString()}. It splits the string at the first '/',
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 2e25177e49a9..b489ee9e2988 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -39,6 +39,7 @@ import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
@@ -3707,18 +3708,15 @@ public class PackageParser {
}
return componentName;
}
-
- public String getComponentShortName() {
- if (componentShortName != null) {
- return componentShortName;
- }
- ComponentName component = getComponentName();
- if (component != null) {
- componentShortName = component.flattenToShortString();
- }
- return componentShortName;
+
+ public void appendComponentShortName(StringBuilder sb) {
+ ComponentName.appendShortString(sb, owner.applicationInfo.packageName, className);
}
-
+
+ public void printComponentShortName(PrintWriter pw) {
+ ComponentName.printShortString(pw, owner.applicationInfo.packageName, className);
+ }
+
public void setPackageName(String packageName) {
componentName = null;
componentShortName = null;
@@ -3917,9 +3915,13 @@ public class PackageParser {
}
public String toString() {
- return "Activity{"
- + Integer.toHexString(System.identityHashCode(this))
- + " " + getComponentShortName() + "}";
+ StringBuilder sb = new StringBuilder(128);
+ sb.append("Activity{");
+ sb.append(Integer.toHexString(System.identityHashCode(this)));
+ sb.append(' ');
+ appendComponentShortName(sb);
+ sb.append('}');
+ return sb.toString();
}
}
@@ -3954,9 +3956,13 @@ public class PackageParser {
}
public String toString() {
- return "Service{"
- + Integer.toHexString(System.identityHashCode(this))
- + " " + getComponentShortName() + "}";
+ StringBuilder sb = new StringBuilder(128);
+ sb.append("Service{");
+ sb.append(Integer.toHexString(System.identityHashCode(this)));
+ sb.append(' ');
+ appendComponentShortName(sb);
+ sb.append('}');
+ return sb.toString();
}
}
@@ -3999,9 +4005,13 @@ public class PackageParser {
}
public String toString() {
- return "Provider{"
- + Integer.toHexString(System.identityHashCode(this))
- + " " + info.name + "}";
+ StringBuilder sb = new StringBuilder(128);
+ sb.append("Provider{");
+ sb.append(Integer.toHexString(System.identityHashCode(this)));
+ sb.append(' ');
+ appendComponentShortName(sb);
+ sb.append('}');
+ return sb.toString();
}
}
@@ -4040,9 +4050,13 @@ public class PackageParser {
}
public String toString() {
- return "Instrumentation{"
- + Integer.toHexString(System.identityHashCode(this))
- + " " + getComponentShortName() + "}";
+ StringBuilder sb = new StringBuilder(128);
+ sb.append("Instrumentation{");
+ sb.append(Integer.toHexString(System.identityHashCode(this)));
+ sb.append(' ');
+ appendComponentShortName(sb);
+ sb.append('}');
+ return sb.toString();
}
}
@@ -4074,9 +4088,13 @@ public class PackageParser {
}
public String toString() {
- return "ActivityIntentInfo{"
- + Integer.toHexString(System.identityHashCode(this))
- + " " + activity.info.name + "}";
+ StringBuilder sb = new StringBuilder(128);
+ sb.append("ActivityIntentInfo{");
+ sb.append(Integer.toHexString(System.identityHashCode(this)));
+ sb.append(' ');
+ activity.appendComponentShortName(sb);
+ sb.append('}');
+ return sb.toString();
}
}
@@ -4088,9 +4106,13 @@ public class PackageParser {
}
public String toString() {
- return "ServiceIntentInfo{"
- + Integer.toHexString(System.identityHashCode(this))
- + " " + service.info.name + "}";
+ StringBuilder sb = new StringBuilder(128);
+ sb.append("ServiceIntentInfo{");
+ sb.append(Integer.toHexString(System.identityHashCode(this)));
+ sb.append(' ');
+ service.appendComponentShortName(sb);
+ sb.append('}');
+ return sb.toString();
}
}
diff --git a/core/java/android/content/pm/ResolveInfo.java b/core/java/android/content/pm/ResolveInfo.java
index de8e256dab1a..e360e4063f7a 100644
--- a/core/java/android/content/pm/ResolveInfo.java
+++ b/core/java/android/content/pm/ResolveInfo.java
@@ -16,6 +16,7 @@
package android.content.pm;
+import android.content.ComponentName;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import android.os.Parcel;
@@ -247,10 +248,23 @@ public class ResolveInfo implements Parcelable {
public String toString() {
ComponentInfo ci = activityInfo != null ? activityInfo : serviceInfo;
- return "ResolveInfo{"
- + Integer.toHexString(System.identityHashCode(this))
- + " " + ci.name + " p=" + priority + " o="
- + preferredOrder + " m=0x" + Integer.toHexString(match) + "}";
+ StringBuilder sb = new StringBuilder(128);
+ sb.append("ResolveInfo{");
+ sb.append(Integer.toHexString(System.identityHashCode(this)));
+ sb.append(' ');
+ ComponentName.appendShortString(sb, ci.packageName, ci.name);
+ if (priority != 0) {
+ sb.append(" p=");
+ sb.append(priority);
+ }
+ if (preferredOrder != 0) {
+ sb.append(" o=");
+ sb.append(preferredOrder);
+ }
+ sb.append(" m=0x");
+ sb.append(Integer.toHexString(match));
+ sb.append('}');
+ return sb.toString();
}
public int describeContents() {