I’ve got an app that runs across Android versions 1.6+, and needs to detect the network type.
I’ve got a problem with HSDPA and WCDMA, though – the former only has a defined constant for TelephonyManager#getNetworkType in API version 5+, and the latter doesn’t seem to have one at all.
Does anyone know what a phone on these network types will return for TelephonyManager#getNetworkType before and after Android 2.0? (I’m assuming that on 2.0+ on an HSDPA network it’ll return the appropriate constant, but the rest appear undefined…)
According to the source code for the TelephonyManager class in Android 1.6, the return value for HSPDA and WCDMA should be
NETWORK_TYPE_UNKNOWN(0).If you look at the constants defined in the Telephony Manager class documentation for the various network types, you can see when each network type was introduced to the API:
HSPDA: API version 5+
WCDMA: (Not documented)
Based on what I have read in wikipedia on WCDMA, it also goes by the name UMTS, which means that a WCDMA phone will return
NETWORK_TYPE_UMTS(3).Summary
HSPDA:
NETWORK_TYPE_UNKNOWN(0) in API Version 4 (Android <= 1.6)NETWORK_TYPE_HSDPA(8) in API Version 5+ (Android 2.0+)WCDMA:
NETWORK_TYPE_UMTS(3) since API Version 1EDIT
I should also point out that, since Android is open source, its possible that the handset provider has overridden these values and functions, so it is possible that they may deviate from the trunk version.