2017-05-09 93 views
0

我的代码中有WebView,它使用自定义WebViewClient。我在我的CustomWebViewClient文件中覆盖了各种错误方法。Android WebViewClient未返回适当的错误

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) { 
    } 
} 

现在,我要处理各种类型的错误在我的WebView。我尝试了以下场景。

1)加载一个不存在的本地html “file:///android_asset/main.html”

- 在这种情况下,我正在回调第一种方法,即OnReceivedError()

2)加载托管在网上的html页面,即http://help.websiteos.com/websiteos/example_of_a_simple_html_page.ht。这个html也不存在。但在这种情况下,我没有得到任何回调的错误方法。

虽然在Chrome检查,我收到以下错误

GET http://help.websiteos.com/websiteos/example_of_a_simple_html_page.ht 404(未找到),这清楚地表明,资源不可用。那么为什么WebView不会返回任何错误回调?


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

回答