在Android中,WebView可以用来加载http和https网页到本地应用的控件。但是在默认情况下,通过loadUrl(String url)方法,可以顺利loadUrl(“http://www.baidu.com”)之类的页面。但是,当load通过ssl加密的https页面,但是如果这个网站的安全证书在Android无法得到认证,WebView就会变成一个空白页,而并不会像自带的浏览器一样弹出提示。因此,我们必须针对这种情况进行处理。

Android 2.2及更高方法

首先说的是Android 2.2及更高的处理方式,在2.2及以上系统中处理只需要重载WebViewClient 的onReceivedSslError即可。

首先需要import两个类:

1
2
import android.net.http.SslError ;
import android.webkit.SslErrorHandler ;

然后复制这段代码,去掉需要项的注释。

1
2
3
4
5
6
7
8
9
WebView webview = (WebView )findViewById (R. id. webview ) ;
webview. setWebViewClient ( newWebViewClient ( ) {
@Override
public voidonReceivedSslError (WebView view, SslErrorHandler handler, SslError error ) {
//handler.cancel(); 默认的处理方式,WebView变成空白页
//handler.process();接受证书
//handleMessage(Message msg); 其他处理
}
} ) ;

如果当重载函数里面是process()时,系统就会忽略证书的错误继续Load页面内容,不会显示空白页面。


Android 2.1及以下方法
但是,重载WebViewClient 的onReceivedSslError只能在2.2以上系统中使用,2.1和以下系统压根就没有SslError的类。不过这好办,我们可以直接复制2.2系统中的WebViewClient.java 和 SslError.java 文件。

下载地址传送门:
WebViewClient.java:http://www.oschina.net/code/explore/android-2.2-froyo/android/webkit/WebViewClient.java
SslError.java:http://www.oschina.net/code/explore/android-2.2-froyo/android/net/http/SslError.java

我们只要把上面两个文件下载来并import到需要处理SSL的活动中,然后import进来即可。这样就可以像2.2以上的系统一样处理即可。





更多相关文章

  1. cocos2d-x android 字体的设置
  2. Android如何运行真机在eclipse上调试应用?
  3. Android(安卓)应用开发特色
  4. Android(安卓)Framework面试题
  5. 【Android】事件处理系统
  6. Android打开系统调试总开关
  7. Android系统版本与API等级对应关系表
  8. 关于微信浏览器调整字体大小,H5页面适配问题
  9. Android实现系统状态栏的隐藏和显示功能

随机推荐

  1. 纯静态文件打包部署预览链接,来自于vue的c
  2. 表格与表单
  3. 导航制作flex
  4. 带二级分类的导航
  5. 前端基础,伸缩盒布局小案例及总结
  6. 色彩如何练习?色彩入门基础调色技巧!
  7. 第三课-盒子模型-导航栏
  8. WebStorm 配合 Cmder 或 Git Bash
  9. 表格制作excel教程,excel表格制作教程入
  10. 鼠标悬停伪类的理解