Android O自动填充功能:姓名、姓氏和生日。

3

是否可以使用新的Android Oreo自动填充功能来填写生日信息?还有一种方法可以区分名字和姓氏吗?我只在API文档中看到了AUTOFILL_HINT_NAME。

4个回答

5
在工作中浪费了一整天的时间,试图为名字添加autofillHints,因为明显family-name适用于Google自动填充服务 :@ 但是对于名字却没有任何作用。所以我检查了Facebook应用和Flixbus,猜猜他们俩都可以自动填充名字,于是我感到非常绝望,尝试使用cc-given-name,然后它竟然奏效了!!!即使我的手机上的Google账户名称是公司的,并且以前从未输入过任何信用卡信息。
可悲的是,Android团队中没有人提到family-name提示或者cc-given-name实际上存在的事实,无论您是否曾经使用您的帐户填写信用卡信息。
对于我来说,我只使用EditText而没有任何标签之类的东西,但是我不得不添加android:hint="名字"android:hint="姓氏"才能显示自动完成,否则它不起作用。
所以它是这样的:(为了简单起见,删除了id、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>

3

现在有许多自动填充提示值已经被记录下来了。

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

我用这些值来填写名和姓,效果很好:

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

注意:这两个字符串的开头都有一个点号(".")。

我发现自动填充界面有点令人困惑,因为当填写名字字段时,弹出窗口会显示全名(见下面的截图)。但是当用户点击他们的全名时,名字和姓氏字段将同时被填写,这很酷!

autofill screenshot


2
这些属性View.AUTOFILL_HINT_*“不是详尽无遗的”,而是建议性的。在android:autofillHints中,您可以设置任何您喜欢的字符串,甚至是用逗号分隔的多个字符串,如文档所述:
“描述视图的内容,以便自动填充服务可以填入适当的数据。多个提示可以组合成逗号分隔的列表或字符串数组,例如电子邮件地址或邮政地址。”
自动填充服务接收这些提示,并根据其算法实现返回一个FillResponse数据集,其中包含可能要填充的数据。
服务甚至可以查看包含标签“名字”之类的视图节点,以确定您的EditText需要名字而不是全名。您可以将'first-name'放在您的autofillHint中,但只有当用户拥有具有名字数据的自动填充服务并且其算法足够智能以匹配它时,它才会起作用。
简而言之,不能保证自动填充对于特定用户会起作用,但有一些程序可以增加成功的机会:
  1. 将您认为有帮助的自动填充提示用逗号分隔,记得使用其他系统或行业标准使用的常量,例如HTML标准使用“given-name”表示名字。如果Google自动填充开始支持名字和姓氏,则这将成为其匹配算法的可能候选项,因此“android:autofillHint =“first-name,given-name,display-name””将具有高匹配概率。
  2. 如果您正在使用某些TextView作为标签,请使用“android:importantForAutofill =”yes“”,并尝试将其放入同一个视图节点中。
  3. 使用EditText、AutocompleteTextView和其他已经针对自动填充进行了优化的视图。
  4. 使用像“android:label”这样的属性,如果您的提示不够好,则自动填充服务的启发式算法很可能会使用它们。

查看自动填充优化Android指南获取更多提示。

请查看HTML标准自动填充标签列表

0
能否使用新的Android Oreo自动填充功能来填写生日?不行。希望很少有人会在同一个应用程序中反复输入他们的生日。
还有一种方法可以区分名字和姓氏吗?不行。
Android的自动填充支持HTML5的自动完成详细标记的一个小子集。

2
这并不是关于在同一个应用程序中重复输入数据的问题。据我所了解,该功能在整个系统范围内工作。因此,如果自动填充服务知道您的生日,它可以在任何支持它的应用程序中为您提供自动填充选项。 - Stefan Arn
@StefanArn:无论如何,都不支持生日。 - CommonsWare
生日目前作为bday,bday-day,bday-month,bday-year的一部分包含在HTML标准中:https://developer.mozilla.org/zh-CN/docs/Web/HTML/Attributes/autocomplete - Allan Veloso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接