如何让应用支持 Android 8.0 自动填充?


自从 Android Oreo 发布以来,自动填写功方便了用户在 App 内提交信息,例如信用卡、登陆信息、地址等等。现在 App 内的表格都可以自动填写,而且用户也无须费力记住复杂的密码,也免去了一次次填写的麻烦。


用户可以自行选择多种自动填写服务 (过程类似选择输入法)。在默认情况下,Google(服务)支持自动填写,不过用户也可以自行添加任何三方自动填写 App ,过程如下:

设定 -> 系统 -> 语言 -> 高级选项 -> 自动填写服务



自动填写现支持项目

现在,Google(服务)下的自动填写功能支持的项目包括:信用卡信息、地址、登陆信息、姓名和电话号码。当用户首次登陆或者创建账号时,自动填写功能同时允许用户保存该账号的认证信息。即使 App 内通过 WebViews 完成登陆 —— 用于打开登陆页面的内置浏览器控件 —— 用户依旧可以享用自动填写功能带来的方便,前提是设备内装有 Chrome 61 或者更高版本。


自动填写 API 完全开放,任何想要将该服务内嵌到自己 App 的开发者都可以下载该 API。现在我们正在和 1Password, Dashlane, Keeper 以及 LastPass 积极合作,加快三者在 Android 平台上的认证。同时我们将会认证密码管理器(password manager)并将其添加到 Google Play 中,用户可以通过 “添加服务” 按钮跳转链接 Google Play 中的页面。



开发者应该怎么做?

如果您是 App 开发者,只须要完成以下几个简单步骤,就可以在 App 中轻松添加自动填写功能:


对 App 进行测试,如有必要需要标注视图:

大部分情况下,让 App 支持自动填写功能不需要额外操作。但是为了保证行为一致性,我们建议开发者通过 android:autofillHints attribute 或者 setAutofillHints ( ) method 向框架提供关于字段内容的显式提示信息(explicit hint)。


如果 App 使用 WebViews,那么开发者可以通过 HTML Autocomplete Attributes 提供字段提示信息。有一点要注意,设备须要将 Chrome 浏览器升级至 61 或以上版本,WebViews 才能支持自动填写功能。即使您的 App 采用自定义视图,开发者也可以通过定义元数据来添加自动填写功能。

了解更多:https://developer.android.google.cn/guide/topics/text/autofill.html#custom_views_with_standard_view_structure


那么像是 Captcha(验证码)或者消息对话框这类完全不适用自动填写的应该怎么操作呢?开发者只需要将视图参数设定为 IMPORTANT_FOR_AUTOFILL_NO(或者将视图层次根设定为 IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS)。开发者得负责地使用该字段,牢记用户可以随时绕过这一步骤,只要长按输入框(EditText)并选定悬浮菜单中的自动填写就行了。


关联网站和移动端 App

Google 自动填写功能够无缝分享网站和移动端 App 之间的登陆信息,即是说 Chrome 浏览器保存的密码亦可以应用在原生 App 上。但是如何保证三方 App 也能分享信息呢?这须要开发者在网站和移动端 App 之间构建明确联系,步骤如下:



第一步:在 yourdomain.com/.well-known/assetlinks.json 中托管 JSON 文件

如果之前接触过类似 App  Link或者 Google Smart Lock 的技术,那么您可能听说过数字资产链接(DAL)文件。DAL 采用 JSON 文件的形式保存在您的网络服务器 .well-known 目录中,用于公开声明与此网站关联的其他 App 或者网站。


请参阅 Smart Lock for Passwords 指南,按照指南中的步骤在服务器上正确创建并且托管 DAL 文件。就用户登录 App 来说,Smart Lock 虽然更为高级,但是我们的自动填写功能其实采用的是相同的基础架构来验证 App 和网站之间的关联信息。而且,因为 DAL 文件是完全公开的,第三方自动填写服务开发者也可以使用关联信息来保障实现安全性。



第二步:根据相同信息更新 App 的清单文件(Manifest)

同样地,请根据 Smart Lock for Passwords 指南中《声明 Android  App 关联项》条目,完成此步骤。


开发者须要根据 asset_statements 资源更新 App 的清单文件,该资源能够链接到托管 assetlinks.json 文件的 URL 地址。完成操作之后,开发者需要重新上传 App 到 Google Play,并且填写 “关联提交表格”(Affiliation Submission Form),届时关联才正式生效。


Android Studio 3.0 中 App Links Assistant 能够帮开发者自动生成上述所有信息。打开 DAL 生成器工具(工具 -> App  Links Assistant -> 打开数字资产链接文件生成器),确保启用名为 “支持 App 和网站之间共享认证信息” 的新复选框。


然后点击 “生成数字资产链接文件”,将预览信息复制到 DAL 文件中,并将文件托管在服务器和 App 上。记得核实选定域名和证书是否正确。


Android 自动填写功能还在初级阶段,不论用户是通过 Google 还是三方密码管理器来使用该功能,我们都将继续努力,改善体验。



展望未来

我们的主要努力方向是:

  1. Google 自动填写:我们希望用户从一开始就能够有很好的体验,因此所有 Android Oreo 设备都支持 Google 自动填写功能。一直以来,我们不断改善字段检测和数据质量,同时扩大支持范围,增加保存数据类别。

  2. WebView 支持:从 Chrome 61 开始,我们引进了对 WebViews 表单填写支持,同时我们会继续测试、加固并且改善该集成,因此即使您的 App 采用WebViews,同样可以享受到自动填写功能。

  3. 第三方 App 支持:我们正在和生态圈伙伴紧密合作,确保 App 能够完美构建在自动填写基础框架上。强烈建议开发者试着在 Android Oreo 上发布自己的 App ,看看能否如期支持自动填写。详细信息请参阅以下链接中的《自动填写框架》完整版文档。

    自动填写框架:https://developer.android.google.cn/guide/topics/text/autofill.html


如遇任何问题或有任何宝贵意见,欢迎您通过留言等方式与我们联系,帮助我们进一步改进产品。



推荐阅读:

Android Oreo 常见问题 2.0  | Android 开发者 FAQ Vol.9

创造 “魔术时刻” —— Android 8.0 画中画

重磅登场!中文版 Android 开发教学视频终于来啦!

正式发布 Android 架构组件 1.0 稳定版 | 附带中文介绍视频

Material Design 中的应用栏该怎么设计?


https://developer.android.google.cn/guide/topics/te

已标记关键词 清除标记
相关推荐