Added in API level 27

CustomDescription


class CustomDescription : Parcelable
kotlin.Any
   ↳ 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

Builder for CustomDescription objects.

Inherited constants
Public methods
Int

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

String

Returns a string representation of the object.

Unit
writeToParcel(dest: Parcel, flags: Int)

Flatten this object in to a Parcel.

Properties
static Parcelable.Creator<CustomDescription!>

Public methods

describeContents

Added in API level 27
fun describeContents(): Int

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.

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

toString

Added in API level 27
fun toString(): String

Returns a string representation of the object.

Return
String a string representation of the object.

writeToParcel

Added in API level 27
fun writeToParcel(
    dest: Parcel,
    flags: Int
): Unit

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_WRITE_RETURN_VALUE.
Value is either 0 or a combination of the following:

Properties

CREATOR

Added in API level 27
static val CREATOR: Parcelable.Creator<CustomDescription!>