轉載請標明出處,維權必究: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來判斷是什麼錯誤,進行過濾處理。