前言

  在使用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 Contentif (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. Android(安卓)通用的下拉刷新,重温事件传递
  2. Android信任Https自签名证书详细教程
  3. android基础知识12:android自动化测试06―Instrumentation 03 技
  4. [置顶] Android(安卓)进程常驻(1)----开篇
  5. Jetpack系列之 Paging 详解
  6. ubuntu下eclipse Android(安卓)ADT中SDK Manager中安装SDK失败的
  7. Android——屏幕旋转时数据丢失问题解决方案
  8. Android获取其他包的Context实例然后做坏事
  9. Android(安卓)Accessibility 辅助功能简单介绍

随机推荐

  1. android跳转到手机系统默认应用市场的方
  2. android屏幕的那些事之一!
  3. Android(安卓)TabHost的标签放在底部,已写
  4. Android中数据存储的三种方式--基础
  5. android "Only the original thread that
  6. android Button源码分析
  7. android图片上传
  8. android 常见死机问题--log分析
  9. 50 Android(安卓)Hack 读书笔记
  10. android解析httpresponce内容