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