Loading

WebView断网提示

转载请标明出处,维权必究https://www.cnblogs.com/tangZH/p/9913968.html 

更多查看:http://77blogs.com/?p=497

 

重写WebViewClient中的方法,然后WebView.setWebViewClient(mWebViewClient);

    WebViewClient mWebViewClient = new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {return false;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
        }

        @Override
        public void onLoadResource(WebView webView, String s) {
            super.onLoadResource(webView, s);
        }

        @Override
        public void onScaleChanged(WebView webView, float v, float v1) {
            super.onScaleChanged(webView, v, v1);
        }

        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
mWebView.loadUrl("");//避免出现默认错误页 showErrorView();
} };

在onReceivedError中便可以进行网络出错时候的提示与处理,若是走到这里说明网络出错,或者服务器出错。可以在该方法中进行判断是不是没有网络。6.0以上与6.0以下的都可以用该方法进行监听回调。

实践证明

1、在该方法被调用后,onPageFinished()方法也会被回调,所以最好不要在该方法中进行页面重置操作,比如断网时候弹出断网页面,但是若在onPageFinished()里面去显示正常页面,那么断网提示就消失了。

2、onPageFinished()会调用多次)

 

不过在6.0以上的时候又增加了一个新的方法:

@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
   super.onReceivedError(view, request, error);
}

实践证明:成功加载出网页的时候也会回调该方法,或者出现其他非网络错误的时候也会,所以我们需要通过error来判断是什么错误,进行过滤处理。

 

posted @ 2018-11-06 10:51  妖久  阅读(1077)  评论(0编辑  收藏  举报