我的代码中有一个使用自定义WebView
的{{1}}。我在WebViewClient
文件中覆盖了各种错误方法。
CustomWebViewClient
现在,我想在WebView中处理各种类型的错误。我尝试了以下方案。
1)加载不存在的本地html " file:///android_asset/main.html" 。
- 在这种情况下,我正在回调第一种方法,即public class CustomWebViewClient extends WebViewClient {
@SuppressWarnings("deprecation")
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onReceivedHttpError(
WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
}
}
。
2)加载网络上托管的html网页,即 http://help.websiteos.com/websiteos/example_of_a_simple_html_page.ht 。这个HTML也不存在。但在这种情况下,我没有得到任何回调错误方法。
在Chrome上进行检查时,我收到以下错误
获取http://help.websiteos.com/websiteos/example_of_a_simple_html_page.ht 404(未找到),这清楚地表明该资源不可用。那么为什么WebView没有返回任何错误回调?
在这两种情况下,我都在请求一个不可用的资源。但我只在第一个场景中收到错误回调。
答案 0 :(得分:1)
您必须在api为< 23。 网址http://help.websiteos.com/websiteos/example_of_a_simple_html_page.ht 将回调返回给onReceiveHttpError()。但是此方法仅从API级别23添加。 Reference