欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

WebView断网提示

程序员文章站 2022-06-08 20:37:39
转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/9913968.html 重写WebViewClient中的方法,然后WebView.setWebViewClient(mWebViewClient); 在onReceivedError中便可以进行网络出错时 ......

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

 

重写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来判断是什么错误,进行过滤处理。