用于姓名,姓氏和生日的Android O自动填充功能

时间:2017-10-03 12:35:59

标签: android autofill android-8.0-oreo

是否可以将新的Android Oreo自动填充功能用于生日?有没有办法区分名字和名字?姓?我只在API文档中看到了AUTOFILL_HINT_NAME。

4 个答案:

答案 0 :(得分:2)

这些属性View.AUTOFILL_HINT_ * 并不是很好的,而是建议。在android:autofillHints中,您可以从文档中设置所需的任何字符串,甚至可以是多个用逗号分隔的字符串:

  

描述视图的内容,以便自动填充服务可以填充适当的数据。可以在逗号分隔的列表或字符串数​​组中组合多个提示,以表示例如emailAddress或postalAddress。

自动填充服务接收到这些提示,并根据其算法实现返回FillResponse数据集以及可能要填充的数据。

该服务甚至可以在节点中查找包含诸如“名字”之类的标签的视图,以确定您的EditText想要名字而不是全名。您可以在autofillHint上放置“名字”,但是只有当用户拥有具有名字数据的自动填充服务并且其算法足够智能才能匹配它时,该功能才有效。

简而言之,不能保证自动填充功能对特定用户有效,但是有些程序会增加机会:

  1. 输入您认为可以帮助的autofillHint,以逗号分隔。记住使用其他系统使用的常数或行业标准,例如HTML标准将given-name用作名字。如果Google自动填充功能开始支持将其匹配算法用作候选者的名字和姓氏,那么android:autofillHint="first-name,given-name,display-name"的匹配可能性就很大。
  2. 如果您在标签上使用android:importantForAutofill="yes",请使用TextView,并尝试将其放置在同一视图节点中。
  3. 使用EditTextAutocompleteTextView和其他已选择自动填充的视图。
  4. 使用“ android:label”之类的属性,如果提示不够好,自动填充服务的试探法可能会使用它们。

选中此autofill optmize Android guide,以获取更多提示。

检查list of HTML standard autofill tags

答案 1 :(得分:1)

在浪费一天的时间后,尝试为名字添加autofillHints,因为显然family-name适用于google自动填充服务:@,但名字无效。因此我检查了Facebook应用程序和Flixbus,并猜测它们俩都可以自动填充名字,所以我很拼命,我尝试了cc-given-name,但效果很好!!!!即使手机上的google帐户名称是该公司的Google帐户,之前也没有输入任何信用卡。 可悲的是,Android团队没有人愿意提起family-name提示或cc-given-name实际上存在的事实,无论您以前是否曾经使用自己的帐户填写过信用卡信息。

因此,对我来说,我只使用了EditText,而没有任何标签,但是我不得不添加android:hint="First name"android:hint="Last name"来显示自动完成功能,因此没有提示它是行不通的。 就像这样:(为简单起见,删除了id,layout_width / height和导向)

<LinearLayout android:orientation="horizontal">
    <EditText 
        android:autofillHints="cc-given-name"
        android:hint="First name"/>
    <EditText style="@style/ChangeUserPropertyInput2"
        android:autofillHints="family-name"
        android:hint="Last name"/>
</LinearLayout>

答案 2 :(得分:0)

  

是否可以将新的Android Oreo自动填充功能用于生日?

没有。希望很少有人在同一个应用程序中反复进入他们的生日。

  

有没有办法区分名字和名字?名字?

没有

Android的自动填充支持HTML5's autocomplete detail tokens的一小部分。

答案 3 :(得分:0)

现在记录了更多自动填充提示值

https://developer.android.com/reference/androidx/autofill/HintConstants

我将这些值用作名字和姓氏,并且效果很好

  • 姓氏-> ".AUTOFILL_HINT_PERSON_NAME_FAMILY"
  • 姓/名-> ".AUTOFILL_HINT_PERSON_NAME_GIVEN"

注意:有一个“。”在这两个字符串的开头。

我发现自动填充UI有点令人困惑,因为在填写名字字段时,弹出窗口会显示全名(请参见下面的屏幕截图)。但是,当用户单击其全名时,名字和姓氏字段将立即填写,这很酷!

autofill screenshot