android webView错误处理

来源:互联网 发布:sql desc asc 编辑:程序博客网 时间:2024/06/05 02:22

webView加载一个404的路径时,会出现not found这样的内容显示出来,但是有时候我们需要在出现这样问题后,做其他处理,所有我们要捕获他的错误,但是SDK的错误处理方法居然不会在加载错误以后回调:

public void onReceivedError (WebView view, int errorCode, String description, String failingUrl)

Since: API Level 1

Report an error to the host application. These errors are unrecoverable (i.e. the main resource is unavailable). The errorCode parameter corresponds to one of the ERROR_* constants.

Parameters
viewThe WebView that is initiating the callback.errorCodeThe error code corresponding to an ERROR_* value.descriptionA String describing the error.failingUrlThe url that failed to load.

没办法,我们要习惯容忍SDK这些问题,下面说一个解决方式,那就是在加载的时候 做一个处理,重新连接一下这个URL,看看返回的code是什么,然后做处理,如下

private void checkWebViewUrl(final WebView webView, final String url) {if (url==null||url.equals("")) {return;}new AsyncTask<String, Void, Integer>() {@Overrideprotected Integer doInBackground(String... params) {int responseCode = -1;try {URL url = new URL(params[0]);HttpURLConnection connection = (HttpURLConnection) url.openConnection();responseCode = connection.getResponseCode();} catch (Exception e) {log.e("Loading webView error:" + e.getMessage());}return responseCode;}@Overrideprotected void onPostExecute(Integer result) {if (result != 200) {webView.setVisibility(View.GONE);} else {webView.loadUrl(url);}}}.execute(url);}


 补充一点:最新发现只有设备的网络状态处于断开的情况下才会进入onReceivedError方法,如果是URL路径对应的服务端返回了404是不会进入这个方法的。

原创粉丝点击