我使用 Android Webview 组件构建了一个小型浏览器,并希望使用 Android AutoFill API 集成密码/凭据管理器支持。
我已经阅读了文档,但完全不理解,并找不到与 webview 等复杂东西集成的示例。
这方面的 JavaScript 对我来说不是问题,我已经有了在登录表单上选择输入时触发事件的代码(并且应该会提示自动填充对话框),以及当用户完成输入用户名和密码并提交页面时触发事件的代码(应该会将凭据保存回密码管理器),但是我很难理解这方面的 Android 代码。
似乎 webview 已经具有一些基本支持,例如,如果我长按登录表单输入字段并在上下文菜单中选择“自动填充”,我可以使其插入一些保存在凭据管理器中的值。但问题是,这些凭据已保存在我的应用程序 ID 下而不是网站域名下,因此我的第一个问题是:如何告诉 API 我请求自动填充菜单时是针对特定字段类型(例如用户名/密码)和属于特定网站,以便它知道要获取哪些凭据并稍后更新它们?以下是我尝试触发自动填充对话框出现的代码:
更新:
当我在应用程序中创建静态的Web视图时,自动填充会正确保存并提示表单凭据,并根据站点正确保存它们,但是我需要在RecyclerView中的Web视图中使其工作,但由于某种原因它们不工作,尽管它们共享相同的设置。我找到了有关在RecyclerView中使用自动填充的信息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也似乎不太可靠。