Skip to content

Most visited

Recently visited



public final class CustomDescription
extends Object implements Parcelable

   ↳ android.service.autofill.CustomDescription

Defines a custom description for the autofill save UI.

This is useful when the autofill service needs to show a detailed view of what would be saved; for example, when the screen contains a credit card, it could display a logo of the credit card bank, the last four digits of the credit card number, and its expiration number.

A custom description is made of 2 parts:

For the credit card example mentioned above, the (simplified) template would be:

   <ImageView android:id="@+id/templateccLogo"/>
   <TextView android:id="@+id/templateCcNumber"/>
   <TextView android:id="@+id/templateExpDate"/>

Which in code translates to:

   CustomDescription.Builder buider = new Builder(new RemoteViews(pgkName, R.layout.cc_template);

Then the value of each of the 3 children would be changed at runtime based on the the value of the screen fields and the Transformations:

 // Image child - different logo for each bank, based on credit card prefix
   new ImageTransformation.Builder(ccNumberId)
     .addOption(Pattern.compile("^4815.*$"), R.drawable.ic_credit_card_logo1)
     .addOption(Pattern.compile("^1623.*$"), R.drawable.ic_credit_card_logo2)
     .addOption(Pattern.compile("^42.*$"), R.drawable.ic_credit_card_logo3)
 // Masked credit card number (as .....LAST_4_DIGITS)
 builder.addChild(, new CharSequenceTransformation
     .Builder(ccNumberId, Pattern.compile("^.*(\\d\\d\\d\\d)$"), "...$1")
 // Expiration date as MM / YYYY:
 builder.addChild(, new CharSequenceTransformation
     .Builder(ccExpMonthId, Pattern.compile("^(\\d\\d)$"), "Exp: $1")
     .addField(ccExpYearId, Pattern.compile("^(\\d\\d)$"), "/$1")

See ImageTransformation, CharSequenceTransformation for more info about these transformations.


Nested classes

class CustomDescription.Builder

Builder for CustomDescription objects. 

Inherited constants


public static final Creator<CustomDescription> CREATOR

Public methods

int describeContents()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.

String toString()

Returns a string representation of the object.

void writeToParcel(Parcel dest, int flags)

Flatten this object in to a Parcel.

Inherited methods



added in API level 27
Creator<CustomDescription> CREATOR

Public methods


added in API level 27
int describeContents ()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. For example, if the object will include a file descriptor in the output of writeToParcel(Parcel, int), the return value of this method must include the CONTENTS_FILE_DESCRIPTOR bit.

int a bitmask indicating the set of special object types marshaled by this Parcelable object instance.


added in API level 27
String toString ()

Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

 getClass().getName() + '@' + Integer.toHexString(hashCode())

String a string representation of the object.


added in API level 27
void writeToParcel (Parcel dest, 
                int flags)

Flatten this object in to a Parcel.

dest Parcel: The Parcel in which the object should be written.

flags int: Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields


Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (April 2018 — Developer Survey)