2013-10-16 87 views
1

我正在開發一個Android應用程序,其中我正在檢查2G,3G和4G移動數據網絡的類型。我正在使用下面的代碼。確定網絡類型是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的可用性。沒有得到我要去的地方錯了!請幫忙!謝謝!

+0

看到此鏈接http://stackoverflow.com/questions/2802472/detect-network-connection-type-on-android希望這會幫助你。 –

回答

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"); 
    } 
相關問題