...
Workspace ONE Intelligent Hub 23.02 and onward supports adding Access Point Name configurations to any Fully Managed devices on Android 9.0 and higher. Previously, this was only supported for Samsung Fully Managed devices. This will be supported through Custom Settings Profiles as of Intelligent Hub 23.02. Future releases of the Workspace ONE UEM Console will support configuration of this Profile via a dedicated payload.This guide explains how to set up an Access Point Name using a Custom Settings Profile for Android.Updates in Intelligent Hub 23.03: Intelligent Hub 23.03 resolves an issue where the mvnoType was set to SPN despite no value being specified for the field.Proxy Server and MMS Proxy Server can now be set on Android 9 devices. Previously, they could only be set in Android 10+. Updates in Intelligent Hub 23.04: Intelligent Hub 23.04 resolves an issue where, if the MNC value started with "0", this value was not correctly set in the APN configuration.
APN Profile Configuration Parameters When building an Access Point Name configuration, you may set the following values: Custom XML Key NameDescriptionRequired?Expected ValueEntryNameFriendly name of the APN configurationRequiredString Defined by the organization. Can be any useful identifier (e.g. “Corporate APN”)ApnNameAccess Point NameRequiredStringApnTypeBitMaskAPN types are usage categories for an APN entry. APNs may support multiple usage types.RequiredInt Bitmask of the APN types for this configuration. APN types are defined in here. Example: An APN supports APN Types Default and SUPL. TYPE_DEFAULT = 17 = (0010001) TYPE_SUPL = 4 = (0000100) Bitmask = (0010001) || (0000100) = (0010101) = 21 MCCMobile Country CodeRequiredInt Must match the MCC values for the SIM Card used on the device. These values are determined by the carrier.MNCMobile Network CodeRequiredInt Must match the MNC values for the SIM Card used on the device. These values are determined by the carrier.UseManagedAPNsControls whether the APN should be enabled and whether only managed APN configurations should be usable.RequiredBoolean “True” -- Enables the APN configuration and will only allow APNs configured through Workspace ONE UEM should be usable. This will prevent the end user from changing APN settings on the device. “False” – Any APN configuration can be used on the device, including APNs provided by the network operator and manually-added APNs. This APN configuration will be set to a disabled state.NetworkTypeBitMaskRadio Technologies (Network Types) which this APN may use. APNs may support multiple Network Types.OptionalInt Bitmask of the allowed Network Types (Radio Technologies) for this configuration. If no value is set or if set to 0, the device will use this APN configuration with any Network Type. Network types are defined in here. Example: An APN supports Network Types GSM and LTE. NETWORK_TYPE_LTE = 13 = (0001101) NETWORK_TYPE_GSM = 16 = (0010000) Bitmask = (0001101) || (0010000) = (0011101) = 29 AuthTypeAuthentication type for the APNOptionalInt If no value is specified, will be set to 0 - None 0 = None 1 = PAP 2 = CHAP 3 = PAP or CHAPUsernameFor authentication into APNOptionalStringPasswordFor authentication into APNOptionalStringProxyServer Hub 23.02: Supported in Android 10+ Hub 23.03+: Supported in Android 9+HTTP proxy hostname for the APNOptionalString (Supported in Android 10+) Expected format is hostname (e.g. proxy.<domain>.net)ProxyPort (Supported in Android 10+)Port number for the HTTP proxyOptional*Int * Must be set to a non-zero value if ProxyServer is providedMmscMMSC URI for the carrierOptionalString Expected format is URI (e.g. http://mmsc.<domain>.net)MmsProxyServer Hub 23.02: Supported in Android 10+ Hub 23.03+: Supported in Android 9+MMS proxy hostname for the APN.OptionalString (Supported in Android 10+) Expected format is hostname (e.g. mms.proxy.<domain>.net)MmsProxyServerPort (Supported in Android 10+)Port number for the MMS proxyOptional*Int * Must be set to a non-zero value if MMSProxyServer is providedProtocolProtocol used to connect to this APNOptionalInt If no value is specified, will be set to 0 - IPv4 0 = IPv4 1 = IPv6 2 = IPv4v6 3 = PPP 4 = Non-IP 5 = UnstructuredRoamingProtocolProtocol used to connect to this APN when the device is roamingOptionalInt If no value is specified, will be set to 0 - IPv4. 0 = IPv4 1 = IPv6 2 = IPv4v6 3 = PPP 4 = Non-IP 5 = UnstructuredCarrierId (Supported in Android 10+)The carrier ID is an Android platform-wide identifier for a carrier. This maps to the MVNO Value field seen in Android Settings.OptionalInt For the carrier in question, use the "canonical_id" value listed here. The list is a mapping of "canonical_id" to the MVNO Value and carrier name.MvnoTypeMobile Virtual Network Operator typeOptionalInt As of Hub 23.03, if no value is specified, MVNO Type is not set. 0 = SPN 1 = IMSI 2 = GID 3 = ICCID Building the Custom Settings Payload To build the profile: Start by copying the template below. Required fields are in bold.Modify the characteristic uuid to ensure the value is unique across your profiles. This is a string of hexadecimal values. For example, you may change a “9” to a “1”.Using the table under APN Profile Configuration Parameters, populate the fields you need to configure this APN. Except for UseManagedAPNs, your carrier should define these values and share them with you ahead of time.Delete any optional fields from the template that you do not need. For example, if your APN configuration does not use an MMS Proxy, delete <parm name="MmsProxyServerPort" value="" /> and <parm name="MmsProxyServer" value="" /> from the template. For reference, see the example at the end of this guide. Create a new Android Profile and add a Custom Settings payload. Copy the XML code into the Custom Settings field. Assign and publish the Profile. Template: The elements in bold are required.<characteristic uuid="99be39a9-55f4-4f86-1297-782e999d9641" type="com.airwatch.android.androidwork.APN" target="2"> <parm name="EntryName" value="" /> <parm name="ApnName" value="" /> <parm name="ApnTypeBitMask" value="" /> <parm name="Mcc" value="" /> <parm name="Mnc" value="" /> <parm name="UseManagedAPNs" value="" /> <parm name="NetworkTypeBitMask" value="" /> <parm name="AuthType" value="" /> <parm name="Username" value="" /> <parm name="Password" value="" /> <parm name="ProxyServer" value="" /> <parm name="ProxyPort" value="" /> <parm name="Mmsc" value="" /> <parm name="MmsProxyServer" value="" /> <parm name="MmsProxyServerPort" value="" /> <parm name="Protocol" value="" /> <parm name="RoamingProtocol" value="" /> <parm name="CarrierId" value="" /> <parm name="MvnoType" value="" /></characteristic> Example Custom Settings Payload The following profile configures an APN with all required fields. In addition, the profile uses optional fields to define a Proxy Server, MMSC, and MVNO Type (GID):The values are in bold.<characteristic uuid="99be39a9-55f4-4f86-1297-782e199d9641" type="com.airwatch.android.androidwork.APN" target="2"> <parm name="EntryName" value="CorpAPN" /> <parm name="ApnName" value="Carrier_APN_1" /> <parm name="ApnTypeBitMask" value="19" /> <parm name="Mcc" value="404" /> <parm name="Mnc" value="45" /> <parm name="UseManagedAPNs" value="True" /> <parm name="NetworkTypeBitMask" value="0" /> <parm name="ProxyServer" value="proxy.server.com" /> <parm name="ProxyPort" value="770" /> <parm name="Mmsc" value="http://mmsc.carrier.com" /> <parm name="MvnoType" value="2" /></characteristic> Known Limitations Access Point Names added to a device using this Profile cannot be seen under the Settings app of the device. For more feedback on what configurations have been saved on the device by Workspace ONE: Open [Devices > List View > (select device)]Select [More Actions > Request Device Log]Leave the default selections unchanged and select “Save”.Press “Sync Device” from the Hub app to expedite the command.Open [Device Details > More > Attachments > Files].One of the “Applog-xxx” files will show a list of all APN configurations saved on the device with their parameters. In addition, Workspace ONE cannot identify the APN connection that the device is currently using.