安卓实现判断手机网络连接状态是否联网,连接的是移动流量数据还是WIFI连接

开门见山地说,安卓APP在实际开发应用场景中很容易遇到需要判断网络连接状态的需求,毕竟对于手机APP来说,没有网络的情况并不稀奇,可往往这种时候,用户并不知道是自己手机网络的问题,一般会默认觉得这APP怎么这么慢,那么这个时候,作为一个合格的甩锅人,当然是得想办法让用户知道锅不在我们开发人员的身上(理直气壮)!那么就需要有一个合适的方式来实现这个功能。
上代码:

/**
	 * @Title: isNetworkConnected
	 * @Description: 网络是否可用
	 * @param @param context
	 * @param @return
	 * @return boolean
	 */
	public static boolean isNetworkConnected(Context context) {
		ConnectivityManager cm = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo[] info = cm.getAllNetworkInfo();
		if (info != null) {
			for (int i = 0; i < info.length; i++) {
				if (info[i].getState() == NetworkInfo.State.CONNECTED) {
					return true;
				} else {
					continue;
				}
			}
		}
		return false;
	}

调用时:

if(!ConnectUtil.isNetworkConnected(context))
		{
			Toast.makeText(context, "检测不到可用的网络连接", Toast.LENGTH_LONG).show();
			
		}

通过上图的代码我们就可以对APP网络状态能否使用做出一个判断,但是但是,对手机网络状态的监听是需要在APP整个生命周期里去监听的,不可能去调像上面一样就调个方法就搞定的,所以我们需要是要开启一个整个生命周期的网络检测的服务,使得在APP使用的过程中当网络出现问题时就能弹出提示,这样的处理才能让用户给你打好评,嘿嘿!
所以我们就需要在AndroidManifest.xml中去加入一个网络检测服务。

  <!-- 网络监测服务 -->
        <service android:name="//这里网络服务的代码" >
            <intent-filter>
                <action android:name="//这里网络服务的代码" />
            </intent-filter>
        </service>

那么具体详细的完整代码我放在下面的链接里面,大家可以下载来看,里面都有详细的注释的。此外代码里还含有对网络连接方式是移动流量还是WIFI连接的判断,毕竟如果你做的是一个视频类的手机应用,视频播放前不提示用户用WIFI播放,等到最后给用户一个惊喜的话,相信用户也会给到你一个惊吓的。

安卓实现网络情况监测,网络连接是否有效,判断移动网络还是WIFI

以上就是本篇博客的全部内容,希望大家能够给与支持,谢谢!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐