【发布时间】:2018-03-14 15:50:58
【问题描述】:
是否也可以在生日时使用新的 Android Oreo 自动填充功能?有没有办法区分名字和姓氏?我只在 API 文档中看到了 AUTOFILL_HINT_NAME。
【问题讨论】:
标签: android autofill android-8.0-oreo
是否也可以在生日时使用新的 Android Oreo 自动填充功能?有没有办法区分名字和姓氏?我只在 API 文档中看到了 AUTOFILL_HINT_NAME。
【问题讨论】:
标签: android autofill android-8.0-oreo
在工作浪费了一天之后,尝试为名字添加autofillHints,因为显然family-name 适用于谷歌自动填充服务:@ 但对名字没有任何作用。所以我检查了 Facebook 应用程序和 Flixbus 并猜测它们都可以自动填充名字,我非常绝望,我尝试了 cc-given-name 并且它成功了!!!!!!即使手机上的谷歌帐户名称是公司的,并且之前没有输入任何信用卡。
可悲的是,Android 团队中没有人愿意提及family-name 提示或cc-given-name 确实存在的事实,无论您之前是否曾使用您的帐户填写过信用卡信息。
所以对我来说,我只使用了 EditText 没有任何标签左右,但我必须添加 android:hint="First name" 和 android:hint="Last name" 才能显示自动完成,所以没有提示它不起作用。
所以它是这样的:(为简单起见,删除了 ids、layout_width/height 和方向)
<LinearLayout android:orientation="horizontal">
<EditText
android:autofillHints="cc-given-name"
android:hint="First name"/>
<EditText
android:autofillHints="family-name"
android:hint="Last name"/>
</LinearLayout>
【讨论】:
这些属性 View.AUTOFILL_HINT_* 不是详尽的,而是建议。在android:autofillHints 中,您可以从文档中设置任何您喜欢的字符串,甚至可以设置多个以逗号分隔的字符串:
描述视图的内容,以便自动填充服务可以填充适当的数据。多个提示可以组合在逗号分隔列表或字符串数组中,以表示例如电子邮件地址或邮政地址。
自动填充服务接收这些提示,并根据它们的算法实现返回一个FillResponse 数据集,其中包含可能要填充的数据。
该服务甚至可以在节点中查找包含“名字”等标签的视图,以确定您的 EditText 需要名字而不是全名。您可以在autofillHint 中输入“名字”,但只有当用户拥有包含名字数据的自动填充服务并且他的算法足够聪明以匹配它时,它才会起作用。
简而言之,不能保证自动填充对特定用户有效,但有一些程序会增加机会:
autofillHint 用逗号隔开。请记住使用其他系统使用的常量或行业标准,例如 HTML 标准使用 given-name 作为名字。如果 Google 自动填充开始支持名字和姓氏,这可能是其匹配算法的候选者,那么 android:autofillHint="first-name,given-name,display-name" 将有很高的匹配概率。TextView 作为标签,请使用android:importantForAutofill="yes",并尝试放入同一个视图节点。EditText、AutocompleteTextView 和其他已针对自动填充优化的视图。查看此autofill optmize Android guide 了解更多提示。
【讨论】:
现在记录了更多自动填充提示值
https://developer.android.com/reference/androidx/autofill/HintConstants
我将这些值用于名字和姓氏,并且效果很好
".AUTOFILL_HINT_PERSON_NAME_FAMILY"
".AUTOFILL_HINT_PERSON_NAME_GIVEN"
注意:有个“.”在这两个字符串的开头。
我发现自动填充 UI 有点混乱,因为在填写名字字段时弹出窗口会显示全名(见下面的屏幕截图)。但是当用户点击他们的全名时,名字和姓氏字段都会同时填写,这很酷!
【讨论】:
是否也可以在生日时使用新的 Android Oreo 自动填充功能?
没有。希望很少有人会在同一个应用中重复输入他们的生日。
有没有办法区分名字和姓氏?
没有。
Android 的自动填充功能支持HTML5's autocomplete detail tokens 的一小部分。
【讨论】: