WebView--自定義加載頁面異常提示

Android項目中,難免會用到WebView 加載網頁內容,如果由于網絡異常等原因導致頁面內容無法加載出來的時候就會報錯,默認報錯內容如下圖:

Paste_Image.png

在上面的圖中我們可以看到,如果不做處理的話,報錯信息中會包含我們連接到的網址,但實際上我們可能不想讓用戶看到網址,那么這個時候我們就需要使用自定義的錯誤提示頁面。

既然想使用自定義錯誤提示,那我們就需要先知道啥時候出現了錯誤,監測錯誤的時候我們可以使用 WebViewClient 中的 onReceivedError() 方法,當有錯誤時就給出我們自定義的錯誤提示,具體代碼如下:

WebViewTestActivity01.java

/**
 * Created by CnPeng on 2017/1/5. WebView 測試頁面1
 */

public class WebViewTestActivity01 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_webviewtest01);

        init();
    }

    private void init() {
        WebView webView = (WebView) findViewById(R.id.webviewTest1);
        final String url_ = "http://blog.csdn.net/north1989/article/details/53471439";


        webView.setWebViewClient(new WebViewClient() {  //監測加載狀態
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);      //指明要加載的頁面
                return true;        //返回true表示強制使用當前webView 顯示網頁內容,而不跳轉到默認瀏覽器
            }

            @Override       //當發生錯誤時調用此方法
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {

                // 自定義錯誤提示頁面,灰色背景色,帶有文字,文字不要輸漢字,由于編碼問題漢字會變亂碼              
                String errorHtml = "<html><body style='background-color:#e5e5e5;'><h1>Page Not Found " + 
                        "!</h1></body></html>";
                view.loadData(errorHtml, "text/html", "UTF-8");
            }
        });

        webView.loadUrl(url_);
    }
}

注意:
A
WebViewClient 中能監測Error 的方法有四個,兩個onReceivedError(),其中一個廢棄了;一個onReceivedHttpError();一個onReceivedSslError()。我們只用onReceivedError()方法,為了確保低版本手機上也能過濾到Error ,也可以將廢棄的onReceivedError()寫上。千萬不要隨便用onReceivedHttpError,否則你的頁面會一直是你定義的錯誤提示!!!我也不知道 onReceivedSslError 到底是啥錯誤,所以。。。

B
上面展示的自定義錯誤頁面其實使我們用字符串定義的一個簡單的html頁面,加載這個頁面的時候,我們用的是 **loadData( ) ** 。在定義這個錯誤提示的時候,盡量不要用漢字,雖然在loadData()中定義編碼為utf-8 但似乎并不起作用,漢字還是變成了亂碼

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,377評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,245評論 4 61
  • 每天拿著手機刷刷刷也不知道自己在做什么時間就這樣一點點的過去了 媽媽說手機遲早會害了...
    晨語_8aaf閱讀 375評論 0 1
  • 6月25-26日,2016長沙草莓音樂將在長沙萬科魅力之城中央公園舉辦,全名單及演出時間表正式公布!為期兩天的長沙...
    楊非凡閱讀 514評論 0 1