【发布时间】:2020-11-14 11:18:42
【问题描述】:
我已经使用 android webview 组件构建了一个小浏览器,并希望使用 Android AutoFill API 集成密码/凭据管理器支持。
我已阅读文档,但完全迷失了方向,找不到任何与 webviews 等复杂事物集成的示例。
这方面的 javascript 对我来说不是问题,我已经有在用户选择登录表单上的输入时触发的事件(并且应该显示自动填充对话框 ) ,并且当 a 完成输入用户名和密码并提交页面时(并且凭据应该保存回密码管理器),但我很难理解这一点的 android 方面。
webview 似乎已经对此有了一些基本的支持,例如,如果我长按登录表单输入,并在上下文菜单中选择“自动填充”,我可以让它插入一些保存在凭证管理器。问题是虽然凭据已针对我的应用程序 ID 而不是网站域保存,所以我的第一个问题是,当我请求自动填充菜单时,我如何告诉 API 它是针对特定字段类型的(例如用户名/密码)并且属于特定网站,因此它知道要获取哪些凭据并可以稍后更新它们?这是我在登录表单中选择字段时触发自动填充对话框出现的尝试。
更新:
当我在我的应用程序中创建一个静态 webview 时,自动填充会正确保存并提示表单上的凭据,并在每个站点上正确保存它们但是我需要它才能在 recyclerview 中的 webviews 中工作,并且由于某种原因它们没有共享相同的设置。我在 recyclerviews https://developer.android.com/guide/topics/text/autofill-optimize#recycle 中找到了有关自动填充的信息,但使用 setAutofillId() 似乎没有帮助,甚至当我在手机上测试时,这里的官方示例似乎也有点不可靠 https://github.com/android/input-samples/blob/master/AutofillFramework/Application/src/main/java/com/example/android/autofill/app/commoncases/RecyclerViewActivity.java
【问题讨论】:
-
我不知道答案,但我确信它是可以解决的。我很想研究并尝试找到解决方案,赏金 300 :)。如果您可以共享回购链接,那就太好了,当然除非它是商业的。
-
我无法分享源代码,但我想将 webview 添加到基本应用程序很容易。关键是自动填充功能适用于不同的域,例如目前 Bitwarden 将所有内容视为来自我的应用程序 ID(好像它认为我的整个应用程序只有一个用户名和密码)。
标签: android android-recyclerview android-webview autofill android-autofill-manager