Android webview自定义错误页面

Android webview自定义错误页面,android,webview,android-webview,Android,Webview,Android Webview,我正在创建使用WebView访问在线网站的应用程序。我被卡住了,我必须添加代码来检查页面的可用性 public class SpartanWeb extends Activity { WebView mWebView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInst

我正在创建使用WebView访问在线网站的应用程序。我被卡住了,我必须添加代码来检查页面的可用性

public class SpartanWeb extends Activity {

WebView mWebView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Adds Progrss bar Support
    this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
    setContentView(R.layout.main);

    // Makes Progress bar Visible
    getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
            Window.PROGRESS_VISIBILITY_ON);

    // Get Web view
    mWebView = (WebView) findViewById(R.id.webView1);
    WebSettings websettings = mWebView.getSettings();
    websettings.setJavaScriptEnabled(true);
    mWebView.stopLoading();
    mWebView.clearCache(true);
    mWebView.loadUrl("http://google.com");
    mWebView.setHorizontalScrollBarEnabled(false);
    mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
    mWebView.setWebViewClient(new WebViewClient());
    mWebView.setDownloadListener(new DownloadListener() {
        public void onDownloadStart(String url, String userAgent,
                String contentDisposition, String mimetype,
                long contentLength) {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));
            startActivity(intent);
        }
    });

    // onProgressChanged
    final Activity MyActivity = this;
    mWebView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {
            // bar disappear after URL is loaded, and changes string to
            // Loading...
            MyActivity.setTitle("Loading...");
            MyActivity.setProgress(progress * 100); // Make the bar
                                                    // disappear after URL
                                                    // is loaded

            // Return the app name after finish loading
            if (progress == 100)
                MyActivity.setTitle(R.string.app_name);
        }
    });

}// EOM oc

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
}

我正在尝试添加onReceivedError,但由于某些原因,自定义页面未加载

/** Called when the activity is first created. */
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) 
{
mWebView.loadUrl("file:///android_asset/error.html");
}

请给出建议。

您可以使用以下代码

public class TestResultWebclient extends WebViewClient {
        ProgressDialog progressDialog;

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            if (progressDialog == null) {
                progressDialog = new ProgressDialog(TermsAndCondsMrupeeActivity.this);
                progressDialog.setMessage("Loading...");
                progressDialog.show();
            }
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            view.loadUrl(url);
            return true;

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            if (progressDialog != null)
                try {

                    if (progressDialog.isShowing()) {
                        progressDialog.dismiss();
                        progressDialog = null;
                    }

                } catch (Exception exception) {
                    exception.printStackTrace();
                }
            super.onPageFinished(view, url);

        }
    }
您可以在
onReceivedError
函数中调用loadErrorPage(view)函数

下面的代码将加载您需要显示的错误内容。在这里,我使用
loadDataWithBaseURL
加载html文件

public void loadErrorPage(WebView webview){
        if(webview!=null){

            String htmlData ="<html><body><div align=\"center\" >"This is the description for the load fail : "+description+"\nThe failed url is : "+failingUrl+"\n"</div></body>";

            webview.loadUrl("about:blank");
            webview.loadDataWithBaseURL(null,htmlData, "text/html", "UTF-8",null);
            webview.invalidate();

        }
    }
public void loadErrorPage(WebView WebView){
if(webview!=null){
字符串htmlData=“”这是加载失败的描述:“+description+”\n失败的url是:“+failingUrl+”\n”“;
loadUrl(“关于:空白”);
loadDataWithBaseURL(null,htmlData,“text/html”,“UTF-8”,null);
webview.invalidate();
}
}

我在
mWebView.setWebViewClient(新WebViewClient
中添加了
onReceivedError
,现在它可以工作了。谢谢你的提示

mWebView.setWebViewClient(new WebViewClient() { 
        @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
               mWebView.loadUrl("file:///android_asset/error.html");
        } });

如果我像下面这样设置onReceiveError
mWebView.setWebChromeClient(新WebChromeClient(){public void onReceivedError(WebView视图,int-errorCode,字符串描述,字符串失败URL){mWebView.loadUrl('file:///android_asset/error.html"); 			}
仍在接收默认错误-网页不可用已添加到setWebViewClient及其工作:)
mWebView.setWebViewClient(新WebViewClient(){@Override public void onReceivedError(WebView视图,int errorCode,字符串描述,字符串失败URL){mWebView.loadUrl('file:///android_asset/greska.html"); 			} })
在此之前,我需要帮助如何实现onReceivedError添加此代码-->mWebView.setWebViewClient(新WebViewClient(){@Override public void onReceivedError(WebView,int errorCode,String description,String failingUrl){Log.i(“WEB\u view\u TEST”,“错误代码:+errorCode”);loadErrorPage(view);});=========这可能会对您有所帮助。感谢您的帮助,我已将代码添加到mWebView.setWebViewClient(新WebViewClient(),它现在正在工作您的代码没有显示错误页您在哪里处理错误页?