Android判断当前网络类型

在Android开发中经常需要判断手机是wifi还是网络,但是有个别需求还得判断当前网络是2G /3G 还是4G。

判断手机是否是wifi还是手机网络可以使用NetWorkInfo的getType()方法进行判断。在手机网络的情况下,使用NetWorkInfo的getSubType()方法和TelephonyManager的常量值去比较,判断当前网络具体是何种网络类型。TelephonyManager的常量值类型可以在Android API中看下。

前段时间需要用到这个功能,于是去网上看了看,大概知道了怎么用,但是为了自己的业务还是自己写了个Demo。这里提供了两种方法进行判断当前网络是何种类型。一种是通过广播的方式进行判断,一种是实时监听网络的变化。先附两张图片看下效果:

通过广播进行判断:

切换过网络之后------->>


实时监听网络:

点击之后------->>>


不管是通过广播进行判断还是怎么判断,首先应该在Android工程的清单文件AndroidManifest.xml中添加权限

<!-- 网络权限 -->
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

其次如果用广播方式进行判断的话还得在清单文件中注册一个广播,就以我这个工程为例:

<receiver android:name="com.example.test.NetReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>

判断网络类型的代码呢,都差不多一样,下面是关键性代码:

if (info == null) {
			type = "null";
		} else if (info.getType() == ConnectivityManager.TYPE_WIFI) {
			type = "wifi";
		} else if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
			int subType = info.getSubtype();
			if (subType == TelephonyManager.NETWORK_TYPE_CDMA
					|| subType == TelephonyManager.NETWORK_TYPE_GPRS
					|| subType == TelephonyManager.NETWORK_TYPE_EDGE) {
				type = "2g";
			} else if (subType == TelephonyManager.NETWORK_TYPE_UMTS
					|| subType == TelephonyManager.NETWORK_TYPE_HSDPA
					|| subType == TelephonyManager.NETWORK_TYPE_EVDO_A
					|| subType == TelephonyManager.NETWORK_TYPE_EVDO_0
					|| subType == TelephonyManager.NETWORK_TYPE_EVDO_B) {
				type = "3g";
			} else if (subType == TelephonyManager.NETWORK_TYPE_LTE) {// LTE是3g到4g的过渡,是3.9G的全球标准
				type = "4g";
			}

获取到字段“type”的值你就可以根据你自己的业务来进行网络类型的判断了。

如果想要看源码请:点击打开链接

如果想要转载请注明转载出处,请尊重原创。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值