Android开发中获取当前网络类型的方法

来源:互联网 发布:有声单词软件下载 编辑:程序博客网 时间:2024/05/21 02:36

移动端的网络类型主要分为2G、3G、4G、wifi
判断方法如下:
public String getNetworkType(Context context) {
String strNetworkType = “UnKnown”;
final NetworkInfo activeNetworkInfo = ((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (activeNetworkInfo != null && activeNetworkInfo.getType() == 1) {
strNetworkType = “WIFI”;
}else if (activeNetworkInfo != null && activeNetworkInfo.getType() == 0) {
String subtypeName = activeNetworkInfo.getSubtypeName();
switch (((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkType()) {
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN: //api<8 : replace by 11
strNetworkType = “2G”;
break;
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B: //api<9 : replace by 14
case TelephonyManager.NETWORK_TYPE_EHRPD: //api<11 : replace by 12
case TelephonyManager.NETWORK_TYPE_HSPAP: //api<13 : replace by 15
strNetworkType = “3G”;
break;
case TelephonyManager.NETWORK_TYPE_LTE:
strNetworkType = “4G”;
break;
default:
if (subtypeName.equalsIgnoreCase(“TD-SCDMA”) || subtypeName.equalsIgnoreCase(“WCDMA”) || subtypeName.equalsIgnoreCase(“CDMA2000”)) {
strNetworkType = “3G”;
break;
}
strNetworkType = subtypeName;
break;
}
}
return strNetworkType;
}

TelephonyManager api文档:http://www.android-doc.com/reference/android/telephony/TelephonyManager.html#NETWORK_TYPE_EDGE

0 0
原创粉丝点击