分享

出现Failed to locate a binder for interface: autofill::mojom::PasswordManagerDriver

 wusiqi111 2019-09-16

今天做一个WebView加载一条https的url的时候出现了这个错误,显示不了h5,百度了一下,包括去stackoverflow也查不到解决方案。

百度基本都是说要 setJavaScriptEnabled(true) 或者 是Internet权限没有设置导致的,但是我这2个都设置好了,还是报以上的错误。

然后我无意中设置了webSettings.setDomStorageEnabled(true);

发现   发现   发现

错误还是出现,但是网页竟然可以显示了,具体原因不明,反正可以显示了我就没管了。


--------------------------------------------------------------------------------------------

Webview 加载一些链接出现白板现象,经过调试onLoadResource 已经正常执行,也就是资源文件都已经成功加载,onReceivedSslError也没有回调到,用自带浏览器和UC都是正常,证明链接本身没有问题,Webview也正常运行,没有出现错误,那就是Webview的配置问题了。

经过N个测试,把

webView.getSettings().setJavaScriptEnabled(true);

        webView.getSettings().setAllowContentAccess(true);

        webView.getSettings().setAllowFileAccessFromFileURLs(true);

        webView.getSettings().setAppCacheEnabled(true);

        webView.getSettings().setLoadWithOverviewMode(true);

        webView.getSettings().setUseWideViewPort(true);

        webView.getSettings().setPluginState(WebSettings.PluginState.ON);

都打开,还是未解决。

最终设置 webView.getSettings().setDomStorageEnabled(true);后成功。

按照API的说明  Sets whether the DOM storage API is enabled. The default value is false. 

也就是是否开启本地DOM存储。应该是Html 5中的localStorage(可以使用Android4.4手机和Chrome Inspcet Device联调),用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的,绝大多数的浏览器都是支持 localStorage 的,但是鉴于它的安全特性(任何人都能读取到它,尽管有相应的限制,将敏感数据存储在这里依然不是明智之举),Android 默认是关闭该功能的。

还有一种是加载https的URL时在5.0以上加载不了,5.0以下可以加载,这种情况可能是网页中存在非https得资源,在5.0以上是默认关闭,需要设置,

webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

WebView的问题一般查看log就能找到问题的原因。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多