Android中WebView加载带有ssl层的https页面
来源:互联网 发布:海岛大亨5mac版汉化 编辑:程序博客网 时间:2024/06/09 17:39
在Android中,WebView是用来load http和https网页到本地应用的控件。在默认情况下,通过loadUrl(String url)方法,可以顺利load。但是,当load有ssl层的https页面时,如果这个网站的安全证书在Android无法得到认证,WebView就会变成一个空白页,而并不会像PC浏览器中那样跳出一个风险提示框。因此,我们必须针对这种情况进行处理。(这个证书限于2.1版本以上的Android 系统才可以)
Android的处理要用到两个类
(1)import android.NET.http.SslError;
(2)import android.webkit.SslErrorHandler;
(2)import android.webkit.SslErrorHandler;
注:别忘记在在manifest里面授权
具体处理如下:
webView.setWebViewClient(new WebViewClient() {public void onReceivedSslError(WebView view,SslErrorHandler handler, SslError error) {// //handler.cancel(); 默认的处理方式,WebView变成空白页handler.proceed(); // 接受证书// handleMessage(Message msg); 其他处理}});// 这两行代码一定加上否则效果不会出现webView.getSettings().setJavaScriptEnabled(true);webView.getSettings().setDefaultTextEncodingName("gb2312");webView.loadUrl(<a target=_blank href="https://xxxxxxxx">https://xxxxxxxx</a>);
查看Android浏览器源码在TabControl.Java类中SubWindowClient方法中找,如果只是简单的接受所有证书的话,就直接调process()方法就行了
但是sslerror是从2.2才开始提供的。之前的版本怎么办?
可以把android2.2中onReceivedSslError()的源码导入到自己的工程中,具体方法如下:
先把android2.2包中的SslError.java和WebViewClient.java导入到自己的工程中,在导入时需要建立和android2.2源码包中一样的包名。然后在用webview的时候导包就导自己工程里的这个包名就行!
注意一下 webView 要设置的几个地方兴许能帮上忙:
1 . 默认情况下,不能访问 https,需要重写 WebViewClient 的 onReceivedSslError
ps: API Level > 2.1,或者提供 SslError.java 和 WebViewClient.java 文件
重写部分一般可以不做特殊处理,直接 handler.process(); 接受证书即可
2 . 默认情况下,不能弹 js 框,需要重写 WebChromeClient 的 onJsAlert
重写部分也不需要特殊处理,直接返回 super.onJsAlert(view, url, message, result);
pps: 要 setWebViewClient 和 setWebChromeClient,webView 才能生效
0 0
- Android中WebView加载带有ssl层的https页面
- SDWebImage关于地址https 带有 ssl证书的图片加载
- android webview 加载https
- 【Android】WebView加载https页面不能正常显示资源问题
- 【Android】WebView加载https页面不能正常显示资源问题
- Android WebView加载https页面不能正常显示资源问题
- Android webview在https下实现ssl的双向认证
- Android webview在https下实现ssl的双向认证
- 关于android webview中访问web页面带有upload上传控件的解决办法
- Android中使用WebView加载H5页面的方法
- Android中WebView加载页面的三种格式
- android webview加载https网站
- android webview加载https网页
- Android Webview https ssl 空白页解决方法
- Android Webview https ssl 空白页解决方法
- Android Webview加载页面
- Android - WebView 加载 Https 出现 SSL Error. Failed to validate the certificate chain
- webview加载https页面空白问题
- Jedis(Redis)使用示例
- 强制获取状态栏DecorView的高度
- Linux驱动之定时器和延时
- 如何修改wamp的mysql数据库密码
- json详解
- Android中WebView加载带有ssl层的https页面
- iOS 开发小技巧
- angularjs 删除循环中的 promise 数据之后立马显示变化
- c++命名空间总结
- oracel函数
- C#调用C++的dll问题
- OSGI ByteToCharConverter 找不到
- repositoryItemButtonEdit ButtonClick没有反应的原因
- windows 如何查看端口占用情况?