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