前言

  在使用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);
  • }
  • 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);// 进行其他处理
  • }});

  • 注:在重写WebViewClientonReceivedSslError方法时,注意一定要去除onReceivedSslError方法的super.onReceivedSslError(view, handler, error);,否则设置无效。

更多相关文章

  1. 如今的移动操作系统,写在2013年——android篇 by 伊一线天
  2. android Matrix处理图片原理及方法整理
  3. Android 的属性系统(翻译)
  4. Android 驱动和系统开发 1. 一个简单的例子(原创)

随机推荐

  1. Android共享全局数据
  2. Android(安卓)AlertDialog 对话框开启和
  3. Android(安卓)Native程序crash的一些定位
  4. popupwindow练习
  5. android 固定大小取图片缩略图
  6. Android菜单设计指南
  7. Android(安卓)使用ORMLite操作数据库
  8. Android(安卓)线程模型和 AsyncTask
  9. Android(安卓)Toolchain环境搭建
  10. 在PC电脑上玩Android(安卓)1.x 2.x 3.x