diff options
| author | Dianne Hackborn <hackbod@google.com> | 2013-09-24 14:51:06 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2013-09-24 14:51:06 -0700 |
| commit | 23ff9f6128b5d28a99eca87bf03b221145951988 (patch) | |
| tree | 833a4899b5d5c7c86d7c0fa3c9ceba3bb63e3088 /core/java/android | |
| parent | e3b71bc910d47bec2d0c805c0bc09c089602e6c1 (diff) | |
| parent | 9b7d148466b1aedb24187294e0c59718afb104a0 (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.java | 52 | ||||
| -rw-r--r-- | core/java/android/content/pm/PackageParser.java | 80 | ||||
| -rw-r--r-- | core/java/android/content/pm/ResolveInfo.java | 22 |
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() { |
