版权声明:本文为博主原创文章,转载请注明出处 http://blog.csdn.net/a675420400/article/details/70267249。
本人最近用Android中WebView控件来展示网页,多方便就不用多说了,闲话少叙,直接捞干的。
相信大家在用WebView的过程中,有一些同学会遇到WebView不能加载出网页,网上很多的答案都是设置一些属性,例如设置如下属性
mWebView.loadUrl(mUrl);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setSavePassword(false);
mWebView.setVerticalScrollBarEnabled(false);
mWebView.setHorizontalScrollBarEnabled(false);
// 设置可以支持缩放
mWebView.getSettings().setSupportZoom(true);
// 扩大比例的缩放
mWebView.getSettings().setUseWideViewPort(true);
// 自适应屏幕
mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
mWebView.getSettings().setLoadWithOverviewMode(true);
大部分手机是可以用以上方法加载出来网页的, 但因为Android是开源的,各大厂商会有不同的定制,一些Android系统的设备会不信任任何网页的安全证书,导致不能加载网页。如果遇到因为安全证书不能访问的情况可以用如下 代码试试。
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
//super.onReceivedSslError(view, handler, error);
handler.proceed();
}
});
主要运用这个函数 onReceivedSslError 这个函数,这个是因为不信任安全证书不能打开网页的回调, 在其中只要调用 handler.proceed();函数就可以, 值得注意的事要把super去掉,因为通过源码可以看到 super中有取消加载网页的方法。
另外如果是因为其他问题,本人也建议看看有没有其他错误的回调,本人在这里没做深入研究。
这里再做一点说明WebView设置 WebViewClient的作用是:默认情况下,点击网页中的链接会使用Android系统自带的浏览器打开这个网页,如果希望点击链接会在自己的Browser中响应,必须覆盖WebView的WebViewClient对象。