summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.txt2
-rw-r--r--api/system-current.txt2
-rw-r--r--core/java/android/content/ComponentName.java51
-rw-r--r--services/core/java/com/android/server/content/SyncManager.java2
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);