diff options
| -rw-r--r-- | api/current.txt | 2 | ||||
| -rw-r--r-- | api/system-current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/content/ComponentName.java | 51 | ||||
| -rw-r--r-- | services/core/java/com/android/server/content/SyncManager.java | 2 |
4 files changed, 56 insertions, 1 deletions
diff --git a/api/current.txt b/api/current.txt index fdeda0baeb13..5f4336d19a0b 100644 --- a/api/current.txt +++ b/api/current.txt @@ -7286,6 +7286,8 @@ package android.content { ctor public ComponentName(android.os.Parcel); method public android.content.ComponentName clone(); method public int compareTo(android.content.ComponentName); + method public static android.content.ComponentName createRelative(java.lang.String, java.lang.String); + method public static android.content.ComponentName createRelative(android.content.Context, java.lang.String); method public int describeContents(); method public java.lang.String flattenToShortString(); method public java.lang.String flattenToString(); diff --git a/api/system-current.txt b/api/system-current.txt index deaf916f5040..50e7ffb8b0e2 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7500,6 +7500,8 @@ package android.content { ctor public ComponentName(android.os.Parcel); method public android.content.ComponentName clone(); method public int compareTo(android.content.ComponentName); + method public static android.content.ComponentName createRelative(java.lang.String, java.lang.String); + method public static android.content.ComponentName createRelative(android.content.Context, java.lang.String); method public int describeContents(); method public java.lang.String flattenToShortString(); method public java.lang.String flattenToString(); diff --git a/core/java/android/content/ComponentName.java b/core/java/android/content/ComponentName.java index 547a2c3dca10..8aeb22dddd1e 100644 --- a/core/java/android/content/ComponentName.java +++ b/core/java/android/content/ComponentName.java @@ -18,6 +18,7 @@ package android.content; import android.os.Parcel; import android.os.Parcelable; +import android.text.TextUtils; import java.io.PrintWriter; import java.lang.Comparable; @@ -37,6 +38,56 @@ public final class ComponentName implements Parcelable, Cloneable, Comparable<Co private final String mClass; /** + * Create a new component identifier where the class name may be specified + * as either absolute or relative to the containing package. + * + * <p>Relative package names begin with a <code>'.'</code> character. For a package + * <code>"com.example"</code> and class name <code>".app.MyActivity"</code> this method + * will return a ComponentName with the package <code>"com.example"</code>and class name + * <code>"com.example.app.MyActivity"</code>. Fully qualified class names are also + * permitted.</p> + * + * @param pkg the name of the package the component exists in + * @param cls the name of the class inside of <var>pkg</var> that implements + * the component + * @return the new ComponentName + */ + public static ComponentName createRelative(String pkg, String cls) { + if (TextUtils.isEmpty(cls)) { + throw new IllegalArgumentException("class name cannot be empty"); + } + + final String fullName; + if (cls.charAt(0) == '.') { + // Relative to the package. Prepend the package name. + fullName = pkg + cls; + } else { + // Fully qualified package name. + fullName = cls; + } + return new ComponentName(pkg, fullName); + } + + /** + * Create a new component identifier where the class name may be specified + * as either absolute or relative to the containing package. + * + * <p>Relative package names begin with a <code>'.'</code> character. For a package + * <code>"com.example"</code> and class name <code>".app.MyActivity"</code> this method + * will return a ComponentName with the package <code>"com.example"</code>and class name + * <code>"com.example.app.MyActivity"</code>. Fully qualified class names are also + * permitted.</p> + * + * @param pkg a Context for the package implementing the component + * @param cls the name of the class inside of <var>pkg</var> that implements + * the component + * @return the new ComponentName + */ + public static ComponentName createRelative(Context pkg, String cls) { + return createRelative(pkg.getPackageName(), cls); + } + + /** * Create a new component identifier. * * @param pkg The name of the package that the component exists in. Can diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index 4173b78704b0..7cccef2e8fcf 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -1190,7 +1190,7 @@ public class SyncManager { while (operationIterator.hasNext()) { final SyncOperation op = operationIterator.next(); if (op.appIdle - && getPackageName(op.target).equals(packageName) + && (packageName == null || getPackageName(op.target).equals(packageName)) && (userId == UserHandle.USER_ALL || op.target.userId == userId)) { op.appIdle = false; clearBackoffSetting(op); |