我已经使用 android webview 组件构建了一个小型浏览器,并且希望使用 Android AutoFill API 集成密码/凭据管理器支持。
我已阅读文档,但完全迷失了方向,找不到任何与 webviews 等复杂事物集成的示例。
这的 javascript 方面对我来说不是问题,当用户在登录表单(以及自动填充对话框)上选择输入时,我已经触发了事件should被呈现),当完成输入用户名和密码并提交页面(以及凭据should被保存回密码管理器)但我正在努力理解 Android 方面的问题。
webview 似乎已经对此有了一些基本的支持,例如,如果我长按登录表单输入,并在上下文菜单中选择“自动填充”,我可以让它插入一些保存在凭证管理器中的值。问题是,凭据是根据我的应用程序 ID 保存的,而不是网站域,所以我的第一个问题是,当我请求自动填充菜单时,如何告诉 API 它适用于特定的字段类型(例如,用户名/密码)并且属于特定网站,以便它知道要获取哪些凭据并可以稍后更新它们?这是我尝试在登录表单中选择字段时触发自动填充对话框的显示。
UPDATE:当我在我的应用程序中创建静态 Web 视图时,自动填充会正确保存并提示表单上的凭据,并在每个站点上正确保存它们,但我需要它在回收器视图中的 Web 视图中工作,并且由于某种原因,尽管共享相同的内容,但它们不会设置。我在 recyclerviews 中找到了有关自动填充的信息https://developer.android.com/guide/topics/text/autofill-optimize#recycle 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 https://github.com/android/input-samples/blob/master/AutofillFramework/Application/src/main/java/com/example/android/autofill/app/commoncases/RecyclerViewActivity.java
一个简单的解决方案是让 webview 处理这个问题。
webView.getSettings().setSaveFormData(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(true);
webView.setWebChromeClient(new WebChromeClient() /*Or yourOwnWebChromeClient*/);
webView.setWebViewClient(new WebViewClient() /*Or yourOwnWebViewClient*/);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setSaveFormData(true);
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
CookieSyncManager.getInstance().startSync();
如果需要,您还可以添加 JavaScript 接口
webView.addJavascriptInterface(this, JSInterface);
我使用了这种方法,它保存了 facebook、instagram 以及 dailymotion.com 的登录令牌。
请尝试这个https://stackoverflow.com/a/56562679/9640177 https://stackoverflow.com/a/56562679/9640177
您可以尝试创建多个缓存
您可能也想参考这个 -https://developer.android.com/guide/webapps/managing-webview#java https://developer.android.com/guide/webapps/managing-webview#java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)