WebView加载https页面不能正常显示资源问题
2017-08-02 09:47
746 查看
前言
在使用WebView加载https资源文件时,如果认证证书不被Android认可,那么会出现无法成功加载对应资源问题。那么,我们就要针对这一状况作出对应的处理。
解决步骤
1. 启用mixed content
在Android5.0中,WebView方面做了些修改,如果你的系统target api为21以上:系统默认禁止了mixed content和第三方cookie。可以使用setMixedContentMode() 和 setAcceptThirdPartyCookies()以分别启用。
系统现在可以智能选择HTML文档的portion来绘制。这种新特性可以减少内存footprint并改进性能。若要一次性渲染整个HTML文档,可以调用这个方法enableSlowWholeDocumentDraw()
如果你的app的target api低于21:系统允许mixed content和第三方cookie,并且总是一次性渲染整个HTML文档。
在使用WebView的类中添加如下代码:
// android 5.0以上默认不支持Mixed Content if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { webView.getSettings().setMixedContentMode( WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); }1
2
3
4
5
1
2
3
4
5
2. 设置WebView接受所有网站的证书
在认证证书不被android所接受的情况下,我们可以通过设置重写WebViewClient的onReceivedSslError方法在其中设置接受所有网站的证书来解决,具体代码如下:webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { // TODO Auto-generated method stub // handler.cancel();// Android默认的处理方式 handler.proceed();// 接受所有网站的证书 // handleMessage(Message msg);// 进行其他处理 } });1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
注:在重写
WebViewClient的
onReceivedSslError方法时,注意一定要去除
onReceivedSslError方法的
super.onReceivedSslError(view, handler, error);,否则设置无效。
相关文章推荐
- Android WebView加载https页面不能正常显示资源问题
- 【Android】WebView加载https页面不能正常显示资源问题
- 【Android】WebView加载https页面不能正常显示资源问题
- WebView加载https页面不能正常显示,空白一片
- webview加载https页面图片不能显示问题
- samsung 手机webview 加载https 页面不显示问题
- 小米等手机不能显示windowmanager的问题和webview加载https网址报错的问题
- 解决android 5.0 webview不能加载http与https混合内容的问题
- webview加载https页面空白问题
- nestedscrollview 中加载 webview 内容不能正常显示,Toolbar有警告
- android https加载WebView图片不显示问题
- WebView加载https链接的安全校验问题【7.0手机验证证书无法加载出带证书https页面】
- 解决android 5.0 webview不能加载http与https混合内容的问题
- webview shouldOverrideUrlLoading 页面不能正常返回问题
- html页面在iOS和Android的webview中不能正确加载的问题
- iOS web view 加载本地HTML页面不显示问题
- webview加载https地址图片显示不出来问题
- 解决android 5.0 webview不能加载http与https混合内容的问题
- 解决WebView加载Https无法显示的问题
- android原生WebView打开h5页面加载显示不完整错乱问题