This repository was archived by the owner on Sep 8, 2025. It is now read-only.
Description Now android try to suggest correct autofill type, but fails and show invalid autofill hints. To fix it required some autofill support.
For now particall solution is:
common:
enum class AutoFillType {
EMAIL,
PHONE,
PHONE_CURRENT,
FULL_NAME,
FIRST_NAME,
LAST_NAME,
MIDDLE_NAME,
USERNAME,
PASSWORD,
NEW_PASSWORD,
NEW_USERNAME,
BIRTHDAY_FULL
}
expect fun InputType.withAutoFill(autoFillType: AutoFillType): InputType
android:
actual fun InputType.withAutoFill(autoFillType: AutoFillType): InputType {
val decoratedInputType = this
return object : InputType {
override fun applyTo(editText: EditText) {
decoratedInputType.applyTo(editText)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
autoFillType.applyTo(editText)
}
}
}
}
@RequiresApi(Build.VERSION_CODES.O)
private fun AutoFillType.applyTo(editText: EditText) {
val hints: Array<String> = when (this) {
AutoFillType.EMAIL -> arrayOf(HintConstants.AUTOFILL_HINT_EMAIL_ADDRESS)
AutoFillType.PHONE -> arrayOf(HintConstants.AUTOFILL_HINT_PHONE_NUMBER)
AutoFillType.PHONE_CURRENT -> arrayOf(HintConstants.AUTOFILL_HINT_PHONE_NUMBER_DEVICE)
AutoFillType.FULL_NAME -> arrayOf(HintConstants.AUTOFILL_HINT_PERSON_NAME)
AutoFillType.FIRST_NAME -> arrayOf(HintConstants.AUTOFILL_HINT_PERSON_NAME_GIVEN)
AutoFillType.PASSWORD -> arrayOf(HintConstants.AUTOFILL_HINT_PASSWORD)
AutoFillType.LAST_NAME -> arrayOf(HintConstants.AUTOFILL_HINT_PERSON_NAME_FAMILY)
AutoFillType.MIDDLE_NAME -> arrayOf(HintConstants.AUTOFILL_HINT_PERSON_NAME_MIDDLE)
AutoFillType.USERNAME -> arrayOf(HintConstants.AUTOFILL_HINT_USERNAME)
AutoFillType.NEW_PASSWORD -> arrayOf(HintConstants.AUTOFILL_HINT_NEW_PASSWORD)
AutoFillType.NEW_USERNAME -> arrayOf(HintConstants.AUTOFILL_HINT_NEW_USERNAME)
AutoFillType.BIRTHDAY_FULL -> arrayOf(HintConstants.AUTOFILL_HINT_BIRTH_DATE_FULL)
}
@Suppress("SpreadOperator")
editText.setAutofillHints(*hints)
editText.importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_YES
}
ios:
actual fun InputType.withAutoFill(autoFillType: AutoFillType): InputType {
return this
}
usage is simple:
input(
size = WidgetSize.Const(SizeSpec.MatchConstraint, SizeSpec.WrapContent),
id = Ids.PhoneInput,
label = const(strings.phone),
field = viewModel.phoneField,
inputType = InputType.customPhone().withAutoFill(AutoFillType.PHONE_CURRENT)
)
Reactions are currently unavailable
Now android try to suggest correct autofill type, but fails and show invalid autofill hints. To fix it required some autofill support.
For now particall solution is:
common:
android:
ios:
usage is simple: