0

我一直在使用以下代码来确定设备正在使用哪个网络:

TelephonyManager tempManager;
tempManager= (TelephonyManager)myContext.getSystemService(Context.TELEPHONY_SERVICE);
int result = 0;
    if(tempManager != null && tempManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS) //do we have a UMTS connection ?
  {
   result = 2;
  }
  else if(tempManager != null && tempManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_GPRS) //or is it just a shabby 2g connection ?
  {
   result = 1;
  }
  else if(tempManager != null && tempManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_UNKNOWN) //or is it just a shabby 2g connection ?
  {
   result = 4;
  }
return result;

除非我建立 HSDPA 连接,否则它工作得很好,在这种情况下,它总是会返回 0 作为结果,这在我的情况下使我的软件认为它根本没有连接:(

任何知道发生了什么的人,对此都有一些经验,最重要的是对这个问题有一些解决方案???

提前致谢

4

2 回答 2

2

HSDPA也有一个枚举

要检查是否存在连接并获取类型,我宁愿使用getActiveNetworkInfoisConnected。没有连接时返回null。您还可以通过getTypegetSubtypeName方法检查连接类型,或者您可以混合使用您的方法。

于 2010-12-02T08:17:21.197 回答
0

这是我正在使用的代码。它将安全地检查连接,然后返回连接类型。对于我的应用程序,我只关心 Wifi、Mobile 或未连接,这就是该函数将返回的内容。根据自己的情况改变。

//Check weather Internet connection is available or not
public int checkConnectionType()
{
    final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    final NetworkInfo activeNetInfo = conMgr.getActiveNetworkInfo();
    if (activeNetInfo != null && activeNetInfo.isAvailable() && activeNetInfo.isConnected())
    {
        int type = activeNetInfo.getType();
        if (type == ConnectivityManager.TYPE_MOBILE || type == ConnectivityManager.TYPE_MOBILE_DUN
                || type == ConnectivityManager.TYPE_MOBILE_HIPRI || type == ConnectivityManager.TYPE_MOBILE_MMS
                || type == ConnectivityManager.TYPE_MOBILE_SUPL || type == ConnectivityManager.TYPE_WIMAX)
        {
            return ConnectivityManager.TYPE_MOBILE;
        }
        else if (type == ConnectivityManager.TYPE_WIFI)
        {
            return ConnectivityManager.TYPE_WIFI;
        }
        else
        {
            // Unknown connection type, so to be safe say mobile
            return ConnectivityManager.TYPE_MOBILE;
        }
    }
    else
    {
        // return not connected
        return -1;
    }
}

您将需要在您的应用清单中获得此权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2012-11-21T19:23:03.380 回答