FileDocCategorySizeDatePackage
ComponentName.javaAPI DocAndroid 5.1 API11485Thu Mar 12 22:22:10 GMT 2015android.content

ComponentName

public final class ComponentName extends Object implements Comparable, android.os.Parcelable, Cloneable
Identifier for a specific application component ({@link android.app.Activity}, {@link android.app.Service}, {@link android.content.BroadcastReceiver}, or {@link android.content.ContentProvider}) that is available. Two pieces of information, encapsulated here, are required to identify a component: the package (a String) it exists in, and the class (a String) name inside of that package.

Fields Summary
private final String
mPackage
private final String
mClass
public static final Parcelable.Creator
CREATOR
Constructors Summary
public ComponentName(String pkg, String cls)
Create a new component identifier.

param
pkg The name of the package that the component exists in. Can not be null.
param
cls The name of the class inside of pkg that implements the component. Can not be null.

        if (pkg == null) throw new NullPointerException("package name is null");
        if (cls == null) throw new NullPointerException("class name is null");
        mPackage = pkg;
        mClass = cls;
    
public ComponentName(Context pkg, String cls)
Create a new component identifier from a Context and class name.

param
pkg A Context for the package implementing the component, from which the actual package name will be retrieved.
param
cls The name of the class inside of pkg that implements the component.

        if (cls == null) throw new NullPointerException("class name is null");
        mPackage = pkg.getPackageName();
        mClass = cls;
    
public ComponentName(android.os.Parcel in)
Instantiate a new ComponentName from the data in a Parcel that was previously written with {@link #writeToParcel(Parcel, int)}. Note that you must not use this with data written by {@link #writeToParcel(ComponentName, Parcel)} since it is not possible to handle a null ComponentObject here.

param
in The Parcel containing the previously written ComponentName, positioned at the location in the buffer where it was written.


                                                                          
       
        mPackage = in.readString();
        if (mPackage == null) throw new NullPointerException(
                "package name is null");
        mClass = in.readString();
        if (mClass == null) throw new NullPointerException(
                "class name is null");
    
private ComponentName(String pkg, android.os.Parcel in)

        mPackage = pkg;
        mClass = in.readString();
    
public ComponentName(Context pkg, Class cls)
Create a new component identifier from a Context and Class object.

param
pkg A Context for the package implementing the component, from which the actual package name will be retrieved.
param
cls The Class object of the desired component, from which the actual class name will be retrieved.

        mPackage = pkg.getPackageName();
        mClass = cls.getName();
    
Methods Summary
private static voidappendShortClassName(java.lang.StringBuilder sb, java.lang.String packageName, java.lang.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);
    
public voidappendShortString(java.lang.StringBuilder sb)

hide

        appendShortString(sb, mPackage, mClass);
    
public static voidappendShortString(java.lang.StringBuilder sb, java.lang.String packageName, java.lang.String className)

hide

        sb.append(packageName).append('/");
        appendShortClassName(sb, packageName, className);
    
public android.content.ComponentNameclone()

        return new ComponentName(mPackage, mClass);
    
public intcompareTo(android.content.ComponentName that)

        int v;
        v = this.mPackage.compareTo(that.mPackage);
        if (v != 0) {
            return v;
        }
        return this.mClass.compareTo(that.mClass);
    
public intdescribeContents()

        return 0;
    
public booleanequals(java.lang.Object obj)

        try {
            if (obj != null) {
                ComponentName other = (ComponentName)obj;
                // Note: no null checks, because mPackage and mClass can
                // never be null.
                return mPackage.equals(other.mPackage)
                        && mClass.equals(other.mClass);
            }
        } catch (ClassCastException e) {
        }
        return false;
    
public java.lang.StringflattenToShortString()
The same as {@link #flattenToString()}, but abbreviates the class name if it is a suffix of the package. The result can still be used with {@link #unflattenFromString(String)}.

return
Returns a new String holding the package and class names. This is represented as the package name, concatenated with a '/' and then the class name.
see
#unflattenFromString(String)

        StringBuilder sb = new StringBuilder(mPackage.length() + mClass.length());
        appendShortString(sb, mPackage, mClass);
        return sb.toString();
    
public java.lang.StringflattenToString()
Return a String that unambiguously describes both the package and class names contained in the ComponentName. You can later recover the ComponentName from this string through {@link #unflattenFromString(String)}.

return
Returns a new String holding the package and class names. This is represented as the package name, concatenated with a '/' and then the class name.
see
#unflattenFromString(String)

        return mPackage + "/" + mClass;
    
public java.lang.StringgetClassName()
Return the class name of this component.

        return mClass;
    
public java.lang.StringgetPackageName()
Return the package name of this component.

        return mPackage;
    
public java.lang.StringgetShortClassName()
Return the class name, either fully qualified or in a shortened form (with a leading '.') if it is a suffix of the package.

        if (mClass.startsWith(mPackage)) {
            int PN = mPackage.length();
            int CN = mClass.length();
            if (CN > PN && mClass.charAt(PN) == '.") {
                return mClass.substring(PN, CN);
            }
        }
        return mClass;
    
public inthashCode()

        return mPackage.hashCode() + mClass.hashCode();
    
private static voidprintShortClassName(java.io.PrintWriter pw, java.lang.String packageName, java.lang.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);
    
public static voidprintShortString(java.io.PrintWriter pw, java.lang.String packageName, java.lang.String className)

hide

        pw.print(packageName);
        pw.print('/");
        printShortClassName(pw, packageName, className);
    
public static android.content.ComponentNamereadFromParcel(android.os.Parcel in)
Read a ComponentName from a Parcel that was previously written with {@link #writeToParcel(ComponentName, Parcel)}, returning either a null or new object as appropriate.

param
in The Parcel from which to read the ComponentName
return
Returns a new ComponentName matching the previously written object, or null if a null had been written.
see
#writeToParcel(ComponentName, Parcel)

        String pkg = in.readString();
        return pkg != null ? new ComponentName(pkg, in) : null;
    
public java.lang.StringtoShortString()
Return string representation of this class without the class's name as a prefix.

        return "{" + mPackage + "/" + mClass + "}";
    
public java.lang.StringtoString()

        return "ComponentInfo{" + mPackage + "/" + mClass + "}";
    
public static android.content.ComponentNameunflattenFromString(java.lang.String str)
Recover a ComponentName from a String that was previously created with {@link #flattenToString()}. It splits the string at the first '/', taking the part before as the package name and the part after as the class name. As a special convenience (to use, for example, when parsing component names on the command line), if the '/' is immediately followed by a '.' then the final class name will be the concatenation of the package name with the string following the '/'. Thus "com.foo/.Blah" becomes package="com.foo" class="com.foo.Blah".

param
str The String that was returned by flattenToString().
return
Returns a new ComponentName containing the package and class names that were encoded in str
see
#flattenToString()

        int sep = str.indexOf('/");
        if (sep < 0 || (sep+1) >= str.length()) {
            return null;
        }
        String pkg = str.substring(0, sep);
        String cls = str.substring(sep+1);
        if (cls.length() > 0 && cls.charAt(0) == '.") {
            cls = pkg + cls;
        }
        return new ComponentName(pkg, cls);
    
public voidwriteToParcel(android.os.Parcel out, int flags)

        out.writeString(mPackage);
        out.writeString(mClass);
    
public static voidwriteToParcel(android.content.ComponentName c, android.os.Parcel out)
Write a ComponentName to a Parcel, handling null pointers. Must be read with {@link #readFromParcel(Parcel)}.

param
c The ComponentName to be written.
param
out The Parcel in which the ComponentName will be placed.
see
#readFromParcel(Parcel)

        if (c != null) {
            c.writeToParcel(out, 0);
        } else {
            out.writeString(null);
        }