Android APN type codes
I spent most of a day trying to get an APN definition for MMS working on my new (and first) smartphone. Searching for answers, I found a lot of conflicting information regarding the meaning and specification of "APN type." I finally decided to go to the source (code) to understand. Here's what I found for Android 4.1.1 (sorry if this is duplicative, but nowhere could I find an exhaustive list):
from /android/4.1.1/frameworks/base/telephony/java/com/android/internal/telephony/Phone.java, /android/4.1.1/frameworks/base/telephony/java/com/android/internal/telephony/DataConnectionTracker.java, and /android/4.1.1/frameworks/base/core/java/android/net/ConnectivityManager.java
default any type for which no APN entry is defined
mms Multimedia Messaging Service
supl Secure User Plane Location, geographic device location
dun Dial Up Networking bridge
hipri High Priority Mobile data
ims IP Multimedia Subsystem
fota Over the air Adminstration
cbs Carrier Branded Services
* all types of traffic (literal asterisk string)
"APN type" may be specified by including one or more of the above strings in a comma-separated list (apparently only lower-case, no spaces). In my case (Italy Coop-Voce branded service apparently carried by TIM), specifying a GPRS APN with APN type "default" and a second
APN definition with APN type "mms" was sufficient to provide working Internet, SMS, and MMS access. After saving the MMS APN definition, I saw that it showed no radio-button for selection
. I thought that meant the definition was faulty, but not so; it works just fine for MMS nonetheless (apparently the radio button selects only the primary data APN).
MMS An MMS-specific Mobile data connection. This connection may be the same as TYPE_MOBILE but it may be different. This is used by applications needing to talk to the carrier's Multimedia Messaging Service servers. It may coexist with default data connections.
SUPL A SUPL-specific Mobile data connection. This connection may be the same as TYPE_MOBILE but it may be different. This is used by applications needing to talk to the carrier's Secure User Plane Location servers for help locating the device. It may coexist with default data connections.
DUN A DUN-specific Mobile data connection. This connection may be thesame as TYPE_MOBILE but it may be different. This is used by applicaitons performing a Dial Up Networking bridge so that the carrier is aware of DUN traffic. It may coexist with default data connections.
HIPRI A High Priority Mobile data connection. This connection is typically the same as TYPE_MOBILE but the routing setup is different. Only requesting processes will have access to the Mobile DNS servers and only IP's explicitly requested via requestRouteToHost will route over this interface if a default route exists.
IMS IP Multimedia Subsystem
FOTA Over the air Adminstration.
CBS Carrier Branded Services
Note: directory structure and module content vary with Android version. Some earlier versions do not define all above APN types; otherwise, type strings and meanings appear to be consistent across versions.