我一直在使用以下代码来确定设备正在使用的网络:
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,在我的例子中,这使我的软件认为它根本没有连接:(
任何人谁知道发生了什么,对此有一些经验,最重要的是对这个问题有一些解决方案?
提前感谢
发布于 2010-12-02 16:17:21
还有一个用于HSDPA的枚举
为了检查是否有连接并获取类型,我更喜欢使用getActiveNetworkInfo和isConnected。当没有连接时,它返回null。您还可以通过getType和getSubtypeName方法检查连接类型,也可以混合使用您的方法。
发布于 2012-11-22 03:23:03
这是我正在使用的代码。它将安全地检查连接,然后返回连接类型。对于我的应用程序,我只关心Wifi、Mobile或not connected,所以这就是此函数将返回的内容。根据你自己的情况做出改变。
//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" />https://stackoverflow.com/questions/4332915
复制相似问题