WebView加載自定義error頁面,解決自定義error頁面但是原始error頁面一閃而過的問題

一般來說,webView加載自定義error頁面是這樣做:例如,我下面的代碼在error之後加載了緩存頁面.

mWebView.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageFinished(WebView view, String url) {
                mSpinnerDlg.dismiss();
                // MIUI DEL:
                // if (SettingsLicenseActivity.this.isResumed()) {
                // mTextDlg.show();
                // }
            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                try {
                    view.stopLoading();
                } catch (Exception e) {
                    Log.e(TAG, e.toString());
                }
                try {
                    view.clearView();
                } catch (Exception e) {
                    Log.e(TAG, e.toString());
                }
               
                if (!TextUtils.isEmpty(mCache) && !TextUtils.isEmpty(failingUrl) && !failingUrl.equals(mCache)) {
                    loadCache();
                } else {
                    showErrorAndFinish();
                }
            }

        });

但是,這樣做之後,頁面error確實加載了緩存頁面,卻偶爾能夠看到原始的error頁面一閃而過.最終我找到的比較有效的辦法是添加一句:

view.loadUrl("about:blank");

最終的代碼是這樣的.

mWebView.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageFinished(WebView view, String url) {
                mSpinnerDlg.dismiss();
                // MIUI DEL:
                // if (SettingsLicenseActivity.this.isResumed()) {
                // mTextDlg.show();
                // }
            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                try {
                    view.stopLoading();
                } catch (Exception e) {
                    Log.e(TAG, e.toString());
                }
                try {
                    view.clearView();
                } catch (Exception e) {
                    Log.e(TAG, e.toString());
                }
                view.loadUrl("about:blank");
                if (!TextUtils.isEmpty(mCache) && !TextUtils.isEmpty(failingUrl) && !failingUrl.equals(mCache)) {
                    loadCache();
                } else {
                    showErrorAndFinish();
                }
            }

        });

本文參考了StackOverFlow上一個問題的回答:http://stackoverflow.com/questions/36284186/android-webview-custom-error-page


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