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提示用户出现了网页加载错误。