Android WebViewClient未返回正确的错误

时间:2017-05-09 15:18:57

标签: android webview android-webview

我的代码中有一个使用自定义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没有返回任何错误回调?

在这两种情况下,我都在请求一个不可用的资源。但我只在第一个场景中收到错误回调。

1 个答案:

答案 0 :(得分:1)

您必须在api为< 23。 网址http://help.websiteos.com/websiteos/example_of_a_simple_html_page.ht 将回调返回给onReceiveHttpError()。但是此方法仅从API级别23添加。 Reference