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

在我们的项目中,经常需要对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


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。