Android网络状态获取和WebView的加载完成,加载失败监听

4e48 10年前

在我们的项目中,经常需要对WebView中加载的内容是否完成或者是否加载失败进行判别,这两天写的一个小应用就涉及到了这一点。

WebView的实质就是loadUrl,所以前提是设备接入网络,那么这个如何判断呢?看代码吧:


 // 网络状态   public boolean isNetworkConnected(Context context) {    if (context != null) {     ConnectivityManager mConnectivityManager = (ConnectivityManager) context       .getSystemService(Context.CONNECTIVITY_SERVICE);     NetworkInfo mNetworkInfo = mConnectivityManager       .getActiveNetworkInfo();     if (mNetworkInfo != null) {      return mNetworkInfo.isAvailable();     }    }    return false;   

如果网络正常就加载WebView,否则就提示用户接入网络。


在使用WebView的过程中,我发现在当前Activity加载网页之外,还会打开浏览器加载我们的URL。需要在


wvLast.setWebViewClient(new WebViewClient() {  // ... ...  }


中进行以下复写:


@Override     public boolean shouldOverrideUrlLoading(WebView view, String url) {      // TODO Auto-generated method stub      // return super.shouldOverrideUrlLoading(view, url);      view.loadUrl(url);      return true;     }

相应的,网页加载完成与加载失败也是Google已经提供好的,我们复写我们需要的操作就可以了,也是在setWebViewClient之中:



@Override     public void onPageFinished(WebView view, String url) {      // TODO Auto-generated method stub      // super.onPageFinished(view, url);      finish();     }       @Override     public void onReceivedError(WebView view, int errorCode,       String description, String failingUrl) {      // TODO Auto-generated method stub      super.onReceivedError(view, errorCode, description, failingUrl);      Toast.makeText(onSave.this, "同步失败,请稍候再试", Toast.LENGTH_SHORT)        .show();     }


要注意的是,网页加载失败也是加载完成的一种,就是加载进度也是100,这样onReceivedError就显得不可或缺了。


先写到这儿吧。



转载请注明出处:周木水的CSDN博客 http://blog.csdn.net/zhoumushui

我的GitHub:周木水的GitHub https://github.com/zhoumushui