TelephonyManager.getNetworkType()返回一个常量值。
根据可能的承载链路速度,常量值似乎具有整数顺序。
我知道以下面的方式使用常量值通常是不好的,
然而,是否可以使用它来确定应用程序功能的基本分界点,并使其在API级别之间工作?(在API-v1中没有大于0x03的值)
if( telephonyManager.getNetworkType() > TelephonyManager.NETWORK_TYPE_EDGE )
{
     return "3G! party on!";
}
else if( telephonyManager.getNetworkType() > TelephonyManager.NETWORK_TYPE_UNKNOWN )
{
     return "2G, OK. just don't go nuts!";
}
else 
{
     return "No data sorry"
}发布于 2013-01-09 06:56:16
你不能假设它们是有序的,因为它们不是。例如,LTE是13,而HSPAP (HSPA+)是15,这是不符合顺序的。我写了一段“速度排名”代码,它为每种网络类型分配了自己的速度排名。
public static int getNetTypeSpeedRank(int t) {
    switch (t) {
        case -1:
            t = -1;
        case ContextManager.MDM_NETWORK_TYPE_UNKNOWN:
            t = 0;
            break;
        case ContextManager.MDM_NETWORK_TYPE_IDEN:
            t = 1;
            break;
        case ContextManager.MDM_NETWORK_TYPE_GPRS:
            t = 2;
            break;
        case ContextManager.MDM_NETWORK_TYPE_EDGE:
            t = 3;
            break;
        case ContextManager.MDM_NETWORK_TYPE_UMTS:
            t = 4;
            break;
        case ContextManager.MDM_NETWORK_TYPE_CDMA:
            t = 5;
            break;
        case ContextManager.MDM_NETWORK_TYPE_1xRTT:
            t = 6;
            break;
        case ContextManager.MDM_NETWORK_TYPE_EVDO_0:
            t = 7;
            break;
        case ContextManager.MDM_NETWORK_TYPE_EVDO_A:
            t = 8;
            break;
        case ContextManager.MDM_NETWORK_TYPE_EVDO_B:
            t = 9;
            break;
        case ContextManager.MDM_NETWORK_TYPE_HSDPA:
            t = 10;
            break;
        case ContextManager.MDM_NETWORK_TYPE_HSUPA:
            t = 11;
            break;
        case ContextManager.MDM_NETWORK_TYPE_HSPA:
            t = 12;
            break;
        case ContextManager.MDM_NETWORK_TYPE_HSPAP:
            t = 13;
            break;
        case ContextManager.MDM_NETWORK_TYPE_EHRPD:
            t = 14;
            break;
        case ContextManager.MDM_NETWORK_TYPE_LTE:
            t = 15;
            break;
        default:
            t = 16;
    }
    return t;
}发布于 2010-03-09 05:42:31
我真的不会指望这种行为。
https://stackoverflow.com/questions/2404210
复制相似问题