CustomDescription

public final class CustomDescription
extends Object implements Parcelable

java.lang.Object
   ↳ 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:

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

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
 builder.addChild(R.id.templateccLogo,
   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)
     .build();
 // Masked credit card number (as .....LAST_4_DIGITS)
 builder.addChild(R.id.templateCcNumber, new CharSequenceTransformation
     .Builder(ccNumberId, Pattern.compile("^.*(\\d\\d\\d\\d)$"), "...$1")
     .build();
 // Expiration date as MM / YYYY:
 builder.addChild(R.id.templateExpDate, new CharSequenceTransformation
     .Builder(ccExpMonthId, Pattern.compile("^(\\d\\d)$"), "Exp: $1")
     .addField(ccExpYearId, Pattern.compile("^(\\d\\d)$"), "/$1")
     .build();
 

See ImageTransformation, CharSequenceTransformation for more info about these transformations.

Summary

Nested classes

class CustomDescription.Builder

Builder for CustomDescription objects. 

Inherited constants

Fields

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

Fields

CREATOR

Added in API level 27
public static final Creator<CustomDescription> CREATOR

Public methods

describeContents

Added in API level 27
public 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(android.os.Parcel, int), the return value of this method must include the CONTENTS_FILE_DESCRIPTOR bit.

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either 0 or CONTENTS_FILE_DESCRIPTOR

toString

Added in API level 27
public String toString ()

Returns a string representation of the object.

Returns
String a string representation of the object.

writeToParcel

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

Flatten this object in to a Parcel.

Parameters
dest Parcel: The Parcel in which the object should be written. This value cannot be null.

flags int: Additional flags about how the object should be written. May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE. Value is either 0 or a combination of Parcelable.PARCELABLE_WRITE_RETURN_VALUE, and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES