Android系统中可以通过TelephonyManager提供的方法getNetworkType获取当前手机移动网络类型。以下是定义的各种网络类型的详细含义说明。
/**
* @return the NETWORK_TYPE_xxxx for current data connection.
*/
public @NetworkType int getNetworkType() {
return getNetworkType(getSubId(SubscriptionManager.getDefaultDataSubscriptionId()));
}
/**
* Returns a constant indicating the radio technology (network type)
* currently in use on the device for a subscription.
* @return the network type
*
* @param subId for which network type is returned
*
* @see #NETWORK_TYPE_UNKNOWN //未知类型网络
* @see #NETWORK_TYPE_GPRS //2G(2.5) General Packet Radia Service 114kbps
* @see #NETWORK_TYPE_EDGE //2G(2.75G) Enhanced Data Rate for GSM Evolution 384kbps
* @see #NETWORK_TYPE_UMTS //3G WCDMA 联通3G Universal MOBILE Telecommunication System 完整的3G移动通信技术标准
* @see #NETWORK_TYPE_HSDPA //3.5G 高速下行分组接入 3.5G WCDMA High Speed Downlink Packet Access 14.4mbps
* @see #NETWORK_TYPE_HSUPA // 3.5G High Speed Uplink Packet Access 高速上行链路分组接入 1.4 - 5.8 mbps
* @see #NETWORK_TYPE_HSPA //3G (分HSDPA,HSUPA) High Speed Packet Access
* @see #NETWORK_TYPE_CDMA //2G 电信 Code Division Multiple Access 码分多址
* @see #NETWORK_TYPE_EVDO_0 //3G (EVDO 全程 CDMA2000 1xEV-DO) Evolution - Data Only (Data Optimized) 153.6kps - 2.4mbps 属于3G
* @see #NETWORK_TYPE_EVDO_A //3G 1.8mbps - 3.1mbps 属于3G过渡,3.5G
* @see #NETWORK_TYPE_EVDO_B //3G EV-DO Rev.B 14.7Mbps 下行 3.5G
* @see #NETWORK_TYPE_1xRTT //2G CDMA2000 1xRTT (RTT - 无线电传输技术) 144kbps 2G的过渡
* @see #NETWORK_TYPE_IDEN //2G Integrated Dispatch Enhanced Networks
* @see #NETWORK_TYPE_LTE //4G Long Term Evolution FDD-LTE 和 TDD-LTE , 3G过渡,升级版 LTE Advanced 才是4G
* @see #NETWORK_TYPE_EHRPD //3G CDMA2000向LTE 4G的中间产物 Evolved High Rate Packet Data HRPD的升级
* @see #NETWORK_TYPE_HSPAP //3G HSPAP 比 HSDPA 快些
* @see #NETWORK_TYPE_NR //5G
*
* @hide
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public int getNetworkType(int subId) {
try {
ITelephony telephony = getITelephony();
if (telephony != null) {
return telephony.getNetworkTypeForSubscriber(subId, getOpPackageName());
} else {
// This can happen when the ITelephony interface is not up yet.
return NETWORK_TYPE_UNKNOWN;
}
} catch (RemoteException ex) {
// This shouldn't happen in the normal case
return NETWORK_TYPE_UNKNOWN;
} catch (NullPointerException ex) {
// This could happen before phone restarts due to crashing
return NETWORK_TYPE_UNKNOWN;
}
}