Android的WebView加載異常問題

前言

對於移動端的混合模式開發,一般都會涉及到WebView這一控件,在該控件加載網頁的過程中,多多少少都會遇到加載網頁失敗等情況,那麼也該做個記錄,記錄下這些坑。


1.調用onReceivedError方法的異常情況:

WebView加載網頁時,一直跑WebViewClient的onReceivedError方法,而網頁是可以正常加載出來的,這就鬱悶了。onReceivedError是網頁加載失敗才調用的,一般也在函數內做網頁加載失敗的處理,而現在網頁是加載出來的,卻跑到onReceivedError方法,執行網頁失敗的操作。

怎解

private WebViewClient client = new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);

        }

        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError
                error) {
            super.onReceivedError(view, request, error);
            isReLoading = false;
            loadingDialog.dismiss();
            updateView(false);          //隱藏網頁,顯示加載失敗的原生頁面
        }

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

在onReceivedError方法裏的第三個回調參數是WebResourceError,那麼這個類是否有error的信息呢?通過打Log的方式,打印出下面WebResourceError的方法返回值:

error.getDescription();
error.getErrorCode();
error.toString();

分別輸出:

net::ERR_CONTENT_LENGTH_MISMATCH
-1
com.android.webview.chromium.WebViewContentsClientAdapter$WebResourceErrorImpl@34c3f42

結合上面打印的Log,貌似是網頁資源異常的問題,問了後臺的,原來是後臺在壓縮並修改網頁資源(圖片)導致的,瞎折騰咯…


2.網頁在手機加載不出來,報net::ERR_CACHE_MISS

怎解
可能是忘記在文件清單中加網絡訪問權限

<uses-permission android:name="android.permission.INTERNET"/>

3.網頁在手機加載不出來,webView報net::ERR_NAME_NOT_RESOLVER

怎解
無網絡或本地沒有緩存等情況下才會出現這個


4.網頁在手機加載不出來,webView報net::ERR_ADDRESS_UNREACHABLE

怎解
網頁對應的url地址已經不存在

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章