Android WebView如何判定网页加载的错误

  • Post category:http

Android WebView可以通过以下几种方式判断网页加载的错误:

1. WebViewClient的onReceivedError()方法

在WebViewClient的子类中实现onReceivedError()方法,在网页出现错误时会调用该方法。onReceivedError()方法提供了两个参数:

  • WebView view: 出现错误的WebView。
  • WebResourceRequest request: 发生错误的网页请求。

下面是一个示例代码:

webView.setWebViewClient(new WebViewClient() {

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
        // 错误处理代码
    }
});

同样,WebViewClient还提供了一个重载方法onReceivedError(),可以传递更多信息:

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    super.onReceivedError(view, errorCode, description, failingUrl);
    // 错误处理代码
}

这些参数的含义如下:

  • errorCode: 错误码。
  • description: 错误的描述信息。
  • failingUrl: 出错的网页URL。

2. WebChromeClient的onReceivedError()方法

WebChromeClient的onReceivedError()方法与WebViewClient的onReceivedError()方法功能类似,都可以用来捕获网页加载错误。下面是一个示例代码:

webView.setWebChromeClient(new WebChromeClient() {

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
        // 错误处理代码
    }
});

同样,WebChromeClient还提供了一个重载方法onReceivedError(),可以传递更多信息:

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    super.onReceivedError(view, errorCode, description, failingUrl);
    // 错误处理代码
}

这些参数的含义与WebViewClient的onReceivedError()方法一致。

示例

下面我们使用onReceivedError()方法来检测一个网页加载错误的情况,并提示用户:

webView.setWebViewClient(new WebViewClient() {

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
        Log.e(TAG, "网页加载错误:[" + error.getErrorCode() + "]" + error.getDescription());
        Toast.makeText(MainActivity.this, "网页加载错误", Toast.LENGTH_SHORT).show();
    }
});

在上面的示例中,我们通过调用error.getErrorCode()和error.getDescription()方法来获取错误码和错误描述信息,并把信息输出到Logcat。同时,我们使用Toast提示用户出现了网页加载错误。