确定网络类型是2G,3G还是4G

时间:2013-10-16 07:07:45

标签: java android android-networking connectivity

我正在开发一个Android应用程序,我正在检查2G,3G和4G的移动数据网络类型。我正在使用以下代码。

        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = cm.getActiveNetworkInfo();

        int netType = info.getType();
        int netSubType = info.getSubtype();

我正在使用下面的代码检查2G连接。

        if (netType == ConnectivityManager.TYPE_MOBILE && netSubType == TelephonyManager.NETWORK_TYPE_EDGE)
        {
            Log.e("2G enabled","2G enabled");
        }

使用以下代码检查3G连接。

        else if (netType == ConnectivityManager.TYPE_MOBILE && netSubType == TelephonyManager.NETWORK_TYPE_HSPA)
        {
            Log.e("3G enabled","3G enabled");   
        }

以上3G代码无效。我也试过使用下面的代码。

     TelephonyManager.NETWORK_TYPE_HSUPA

     TelephonyManager.NETWORK_TYPE_HSPA

     TelephonyManager.NETWORK_TYPE_HSDPA

仍无法检测到3G可用性。没有到达我错的地方!请帮忙!谢谢!

1 个答案:

答案 0 :(得分:1)

尝试以下内容:

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);      


if ((tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSDPA)) {
        Log.d("3G enabled", "3G enabled");
    } else if ((tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSPAP)) {
        Log.d("4G enabled", "4G enabled"); 
    }else if ((tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_EDGE)) {
        Log.e("2G enabled","2G enabled");
    }