EMV® 3-D Secure SDK – Device Information

v1.6 Specifications
3-D Secure

EMV® 3-D Secure SDK—Device Information Data Version 1.6 May 2023

1.6

Introduction

Legal Notice

/ 73 The EMV® Specifications are provided “AS IS” without warranties of any kind, and EMVCo neither assumes nor accepts any liability for any errors or omissions contained in these Specifications. EMVCO DISCLAIMS ALL REPRESENTATIONS AND WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NONINFRINGEMENT, AS TO THESE SPECIFICATIONS. EMVCo makes no representations or warranties with respect to intellectual property rights of any third parties in or in relation to the Specifications. EMVCo undertakes no responsibility to determine whether any implementation of the EMV® Specifications may violate, infringe, or otherwise exercise the patent, copyright, trademark, trade secret, know-how, or other intellectual property rights of third parties, and thus any person who implements any part of the EMV® Specifications should consult an intellectual property attorney before any such implementation. Without limiting the foregoing, the Specifications may provide for the use of public key encryption and other technology, which may be the subject matter of patents in several countries. Any party seeking to implement these Specifications is solely responsible for determining whether its activities require a license to any such technology, including for patents on public key encryption technology. EMVCo shall not be liable under any theory for any party’s infringement of any intellectual property rights in connection with the EMV® Specifications.

1.6 Introduction

/ 73 Revision Log The following table lists the version history for the EMV® 3-D Secure SDK—Device Information document. EMV® Specification Bulletins provide the detailed updates made with each document release. Version 2.0.0 2.1.0 1.1 1.3 1.4 1.5 1.6 Release Date Associated Specification Bulletins January 2017

  • SB 190: 3-D Secure

Requirement

Numbering Scheme and Error Processing

  • SB 196: 3-D Secure Updates, Clarifications & Errata October 2017
  • SB 205: EMV® 3-D Secure SDK and Device Information Updates, Clarifications & Errata May 2019
  • SB 213: EMV® 3-D Secure Device Information Data Version 1.1 August 2019
  • SB 222: EMV® 3-D Secure Device Information Data Version 1.3 October 2019
  • SB 223: EMV® 3-D Secure—SDK Device Information Data Version 1.4 Updates, Clarifications and Errata September 2021
  • SB 225: EMV® 3-D Secure SDK—Device Information Data Version 1.5 May 2023
  • SB 285: EMV® 3-D Secure SDK—Device Information Data Version 1.6

1.6 Introduction

1. 1. 1. 1. 1. 1. 1. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.

1.6 Introduction Tables

/ 73 Table 1. Table 2. Table 2. Table 2. Table 2. Table 2. Table 2. Table 2.

1.6 Introduction

/ 73 1 Introduction The 3-D Secure protocol is aimed at securing authentication in Browser-based and Appbased transactions. The EMV 3-D Secure—Protocol and Core Functions Specification (hereinafter also referred to as the Core Specification) describes the 3-D Secure protocol and core functions. The 3DS SDK is the device-side component of 3-D Secure. The EMV 3-D Secure—SDK Specification describes the specification for the 3DS SDK. Device identification is used to uniquely identify platform devices in the 3-D Secure ecosystem. The ThreeDS2Service interface is one of the code elements that are described in the EMV 3-D Secure—SDK Specification. The initialize method of this interface collects the information required for device identification. This information is then sent to the 3DS Requestor App in JSON format. The 3DS Requestor App passes this information to the 3DS Server. The 3DS Server uses this information to create an AReq message. 1.1

Purpose

This document describes the device identification parameters that shall be collected by the 3DS SDK. For the purposes of this document, when the phrase 3-D Secure, or 3DS, is used, the intent is EMV 3-D Secure.

1.2 Audience This document is intended for use by implementers of the 3DS SDK. 1.3

Definitions

For the definition of the terms used in this document, refer to Table 1.3: Definitions in the Core Specification.

1.4 Abbreviations The abbreviations listed in Table 1.1 are used in this specification. Table 1.1: Abbreviations Abbreviation 3DS 3DS SDK

Description

Three Domain Secure Three Domain Secure Software Development Kit

1.6 Introduction Abbreviation ABI ACS API AReq ARes DD DPNA DV LoA MCC MNC NITZ SDK SW Description Application Binary Interface Access Control Server Application Programming Interface Authentication Request Authentication Response Device Data Device Parameter Not Available Data Version Letter of Approval Mobile Country Code Mobile Network Code Network Identity and Time Zone Software Development Kit Security Warning

/ 73 1.5 Data Version Number Refer to EMV® Specification Bulletin 255—3-D Secure Protocol Version Numbers for the Data Version Number status for the 3-D Secure protocol version.

1.6 Supporting Documentation The following documents are specific to the EMV 3-D Secure protocol and should be used in conjunction with this specification. These documents as well as the EMV® 3-D Secure Frequently Asked Questions are located on the EMVCo website under the 3-D Secure heading. EMV® 3-D Secure—Protocol and Core Functions Specification EMV® 3-D Secure—SDK Technical Guide EMV® 3-D Secure—SDK Specification EMV® 3-D Secure—Split-SDK Specification EMV® 3-D Secure JSON Message Samples EMV® Specification Bulletin 255—3-D Secure Protocol Version Numbers

1.6 Introduction

/ 73 1.7 Terminology and Conventions The following words are used often in this specification and have a specific meaning: Shall Defines a product or system capability which is mandatory. May Defines a product or system capability which is optional or a statement which is informative only and is out of scope for this specification. Should Defines a product or system capability which is recommended.

1.6 Device Identification Parameters

/ 73 2 Device Identification Parameters This chapter describes the device identification parameters that shall be collected by the 3DS SDK from all device platforms. These parameters are categorised as Common parameters, Platform-specific parameters and Platform Provider-specific parameters. The 3DS SDK shall collect either:

  • for the Default-SDK – the Common parameters (see Section 2.5) and one set of Platform-specific parameters (see Section 2.6 for Android and Section 2.7 for iOS), OR
  • for the Split-SDK – the Platform Provider-specific parameters (see Section 2.8), then prepare and encrypt the Device Information as defined in Requirements 2 through 5 in the Core Specification. The ACS uses the Device Information for device identification and risk analysis. The 3DS SDK shall collect all the parameters listed in the applicable tables: Table 2.2, Table 2.3, Table 2.4 OR Table 2.5, unless the parameter cannot be collected for any of the reasons stated in Table 2.6. Note: If collecting Platform Provider-specific parameters from Section 2.8, the parameters defined in Sections 2.5, 2.6 and 2.7 are not collected.

2.1 Data Version The Data Version defines the set of device identification parameters that the 3DS SDK shall collect. The Data Version is a means for participating EMV 3-D Secure components to know which set of device identification parameters is being transferred. The Data Version may change when, for example, there are parameter changes in future device OS versions, an existing parameter is deprecated, etc. The Data Version shall be included in the device identification information that is sent by the 3DS SDK. The device identification parameters that are described in this document constitute Data Version 1.6.

2.2 Minimum Supported Platform Versions Table 2.1 lists the minimum platform versions that shall be supported by the 3DS SDK. Table 2.1: Minimum Supported Platform Versions Android iOS Platform Minimum Version Android 10 (API level 29) 15

1.6 Device Identification Parameters

/ 73 Note: The 3DS SDK can elect to support older OS versions as long as the OS vendors provide security fixes for these versions.

2.3 Platform Permissions for Parameters The following types of permissions are required for collecting device identification parameters:

  • No permissions required: Indicates that the device parameters can be directly collected by the 3DS SDK, without any user approval or system permissions.
  • Installation-time permissions: Indicates that the device parameters require system permissions to be granted to the app during installation time.
  • Run-time permissions: Indicates that the device parameters can be collected by the 3DS SDK only if the required permissions have already been granted to the app through user approval at run-time. The 3DS SDK shall check whether an installation-time or run-time permission for a particular parameter is available or has already been granted to the app. If the permission for a particular parameter is not available, then the 3DS SDK shall send one of the Reason Codes stated in Table 2.6 as the value for the parameter within the Device Parameter Not Available (DPNA) tag. The 3DS SDK shall never prompt the user for run-time permissions. Similarly, the 3DS SDK shall not mandate the inclusion of additional installation-time permissions on the 3DS Requestor App.

2.4 Data Format and Representation All parameters shall be encoded as String or Array of String. Boolean device parameters are coded as String of “false” or “true”. Integer parameters are coded as String with the format (-) integer part.

  • Integer may only have a negative sign (-); the positive sign (+) is not allowed.
  • Integer has no leading zeros. Examples: 2, -3 Floating-point and Double Floating-point number parameters are represented as String with the format (-) integer par, dot (.) decimal part.
  • It may only have a negative sign (-); the positive sign (+) is not allowed.
  • The integer part has no leading zeros.
  • The decimal part has no trailing zeros.
  • If the integer part is null, then it is represented by 0 (zero).
  • If the decimal part is null, then the dot and decimal part are not present. Examples: 0, 1.2, -1.2, 0.12, 12

1.6 Device Identification Parameters

/ 73 2.5 Common Device Identification Parameters Available in All Device Platforms Table 2.2 lists the Common parameters that the 3DS SDK shall collect from all Android and iOS device platforms. The availability of these parameters is subject to change in future OS versions. Table 2.2: Common Parameters Available in Android and iOS Platforms Identifier Parameter C001 Platform C002 Device Model Description Platform that the device is using. JSON Data Type: String Values accepted:

  • “Android”
  • “iOS” Mobile device manufacturer and model. JSON Data Type: String Values accepted:
  • Android: Build.MANUFACTURER + “||” + Build.MODEL returns the mobile device manufacturer and model. Example: “Samsung||SM-G960U1”
  • iOS: utsname.machine returns the device model. Example: “iPhone10.4” Note: Apple as a manufacturer is not included because it is the same for all iOS devices. Permissions Not applicable No permissions required

1.6 Device Identification Parameters

/ 73 Identifier Parameter C003 OS Name C004 OS Version Description Permissions Operating system name. JSON Data Type: String Values accepted:

  • Android: “Android” + “ ” + (Build.Version.SDK_INT equivalent field name from Build.Version.VERSION_CODES) + “ ” + Build.Version.RELEASE + “ API ” + Build.Version.SDK_INT returns the name of the operating system and the API level. Example: “Android Q 10 API 29”
  • iOS: the systemName property of the UIDevice class returns the name of the operating system. Example: “iOS” No permissions required Operating system version. JSON Data Type: String Values accepted:
  • Android: Build.VERSION.RELEASE returns the version of the operating system. Example: “8.1.0”
  • iOS: the systemVersion property of the UIDevice class returns the version of the operating system. Example: “14.2” No permissions required

1.6 Device Identification Parameters

/ 73 Identifier Parameter C005 Locale C006 Time Zone Description Permissions Device locale set by the user. For more information, refer to IETF BCP 47. JSON Data Type: String Values accepted:

  • Android: the device locale.Language() + “-” + locale.getCountry() returns the device locale. Example: “en-US”
  • iOS: the device currentLocale.languageCode + “-” + currentLocale.countryCode returns the device locale. Example: “en-US” No permissions required Time zone offset in minutes between UTC and the device local time No permissions required JSON Data Type: String Length: Variable, 1–4 characters Value accepted:
  • Integer in the range of -720 to 840, coded as a string For example, in Android, the TimeZone.getDefault() method returns a time zone based on the time zone where the program is running. Example time zone offset values in minutes: If UTC -5 hours:
  • “300” If UTC +5 hours:
  • “-300”

1.6 Device Identification Parameters

/ 73 Identifier Parameter Description C008 Screen Resolution Pixel width and pixel height. JSON Data Type: String Length: Variable, maximum 13 characters Both width and height: Integer in the range of 0 to 999999 Expressed as width x height, for example: “1080x1920”.

  • Android: the screen resolution can be obtained from the heightPixels and widthPixels fields of the DisplayMetrics class.
  • iOS: the screen resolution can be obtained from the UIScreen mainScreen bounds width and height. C009 Device Name C010 IP Address User-assigned device name. JSON Data Type: String Example:
  • Android: default Bluetooth adapter device name can be used.
  • iOS: the localizedModel property of the UIDevice class returns the Device Name. Local IP address of the 3DS SDK in IPv4 or IPv6 format. JSON Data Type: String Length: Variable, maximum 45 characters Values accepted:
  • IPv4 address. Refer to RFC 791.
  • IPv6 address. Refer to RFC 4291. Permissions No permissions required On Android, this parameter requires Installation-time permissions AND Runtime permissions No permissions required on iOS. On Android, this parameter requires the following permissions during installation: android.permission.INTERNET android.permission.ACCESS_NETW ORK_STATE No permissions required on iOS.

1.6 Device Identification Parameters

/ 73 Identifier Parameter C011 Latitude C012 Longitude C013 Application Package Name C014 SDK App ID Description Permissions Device physical location latitude. JSON Data Type: String Value accepted:

  • Double Floating-point number coded as a string Range: -90 to 90 Run-time permissions required on Android API level 23 and later, and iOS. Installation-time permissions required on Android API level 22 and earlier. Device physical location longitude. JSON Data Type: String Value accepted:
  • Double Floating-point number coded as a string Range: -180 to 180 Run-time permissions required on Android API level 23 and later, and iOS. Installation-time permissions required on Android API level 22 and earlier. The unique package name/bundle identifier of the application in which the 3DS SDK is embedded. JSON Data Type: String
  • Android: obtained from the applicationContext.getPackageName() method.
  • iOS: obtained from the [NSBundle mainBundle] bundleIdentifier property. No permissions required Universally unique ID that is created for each installation of the 3DS Requestor App on a Consumer Device. JSON Data Type: String Length: 36 characters Note: This should be the same ID that is passed to the 3DS Requestor App in the AuthenticationRequestParameters object (refer to Section 4.12.1 in the EMV 3-D Secure—SDK Specification). No permissions required

1.6 Device Identification Parameters

/ 73 Identifier Parameter C015 SDK Version C016 SDK Ref Number C017 dateTime C018 sdkTransID Description Permissions 3DS SDK version as applied by the implementer and stored securely in the 3DS SDK (refer to Requirement 58 in the EMV 3-D Secure—SDK Specification). JSON Data Type: String No permissions required Identifies the vendor and version of the 3DS SDK that is used for a specific transaction. The value is assigned by EMVCo when the Letter of Approval (LoA) of the specific 3DS SDK is issued. JSON Data Type: String Length: Variable, maximum 32 characters Note: The ACS should verify that this value matches the SDK Reference Number present in the AReq message. No permissions required Date and time when the 3DS SDK gathers the Device Information converted into UTC. Refer to the Core Specification for the definition of UTC. JSON Data Type: String Length: 14 characters Format accepted: YYYYMMDDHHMMSS No permissions required Universally unique transaction identifier assigned by the 3DS SDK to identify a single transaction. Refer to the Core Specification for the definition of the SDK Transaction ID. JSON Data Type: String Length: 36 characters Note: The sdkTransID is added to the Device Information before the 3DS SDK encrypts the data. It is updated every time the createTransaction method is invoked. No permissions required

1.6 Device Identification Parameters

/ 73 2.6 Android-specific Device Parameters Table 2.3 lists the Platform-specific parameters that the 3DS SDK shall collect from the Android device platform. The Group or Identifier column contains the name of the parameter group or parameter identifier. Table 2.3: Android-specific Device Parameters Group or Identifier Telephony Manager Element A001 DeviceId Description Comments Permissions Telephony Manager provides access to information about the telephony services on the device. This group of parameters requires the following permissions: Run-time permissions android.permission.SEND_SMS android.permission.READ_PHONE_STATE android.permission.READ_PHONE_NUMBER S User approval is not required for API level 22 and earlier because these permissions are granted during installation. Unique identifier of the device. Example:

  • IMEI for GSM phones
  • MEID or ESN for CDMA phones JSON Data Type: String getDeviceId method deprecated in API level 26. Instead use:
  • getImei, which returns IMEI for GSM, and
  • getMeid, which returns MEID for CDMA. API level 29 or higher throws SecurityException or returns null. Set to RE04. Run-time permissions

1.6 Device Identification Parameters Group or Identifier A002 Element SubscriberId A003 A004 A005 IMEI/SV Group Identifier Level1 Line1 Number A006 A007 MmsUAProfUrl MmsUserAgent Description Comments Unique subscriber ID. JSON Data Type: String Example: IMSI for GSM phones IMEI software version. JSON Data Type: String Group identifier level 1 for a GSM phone. JSON Data Type: String Phone number string for line 1. JSON Data Type: String Example: MSISDN for GSM phones MMS user-agent profile URL. JSON Data Type: String MMS user-agent. JSON Data Type: String API level 29 or higher throws SecurityException or returns null. Set to RE04. Available only for API level 18 or higher. Available only for API level 19 or higher. Available only for API level 19 or higher.

/ 73 Permissions Run-time permissions Run-time permissions Run-time permissions Run-time permissions No permissions required No permissions required

1.6 Device Identification Parameters

/ 73 Group or Identifier A008 A009 A010 A011 Element NetworkCountryIso NetworkOperator NetworkOperatorName NetworkType Description Comments Permissions ISO country code equivalent of the current registered operator’s Mobile Country Code (MCC). Length: 2 characters JSON Data Type: String Value accepted:

  • The ISO-3166-1 alpha-2 country code equivalent of the MCC. Numeric name (MCC + Mobile Network Code (MNC)) of the current registered operator. JSON Data Type: String No permissions required No permissions required Alphabetic name of the current registered operator. JSON Data Type: String No permissions required NETWORK_TYPE_xxxx for the current data connection. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:
  • Integer coded as a string Use getDataNetworkType() only for API level No permissions 24 or higher. required

1.6 Device Identification Parameters

/ 73 Group or Identifier A012 Element PhoneCount A013 PhoneType A014 SimCountryIso Description Comments Permissions Number of phones available. Returns 1 for single standby mode (single SIM functionality). Returns 2 for dual standby mode (dual SIM functionality). Length: 1 character JSON Data Type: String Value accepted:

  • Integer in the range of 0 to 5, coded as a string Available only for API level 23 or higher. getPhoneCount() deprecated in API level 30 From API level 30 onwards use getActiveModemCount() Constant that indicates the device phone type. This indicates the type of radio used to transmit voice calls. JSON Data Type: String ISO country code equivalent of the SIM provider’s country code. Length: 2 characters JSON Data Type: String Value accepted:
  • The ISO-3166-1 alpha-2 country code equivalent of the SIM provider’s country code No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A015 Element SimOperator A016 A017 A018 SimOperatorName SimSerialNumber SimState A019 A020 VoiceMailAlphaTag VoiceMailNumber Description Comments MCC+MNC of the SIM provider. JSON Data Type: String Length: Variable, maximum 6 characters, numeric Service Provider Name (SPN). JSON Data Type: String Serial number of the SIM, if applicable. JSON Data Type: String API level 29 or higher throws SecurityException or returns null. Set to RE04. Constant that indicates the state of the default SIM card. Length: 1 character JSON Data Type: String Value accepted:

  • Integer in the range of 0 to 9, coded as a string Alphabetic identifier associated with the voice mail number. JSON Data Type: String Voice mail number. JSON Data Type: String / 73 Permissions No permissions required No permissions required Run-time permissions No permissions required Run-time permissions Run-time permissions

1.6 Device Identification Parameters

/ 73 Group or Identifier Element Description Comments Permissions A021 A022 A023 A024 hasIccCard Returns true if an Integrated Circuit Card (ICC) is present. JSON Data Type: String Values accepted:

  • “false”
  • “true” isHearingAidCompatibi litySupported Indicates whether the phone supports hearing aid compatibility. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 23 or higher. isNetworkRoaming Determines if the device is considered roaming on the current network, for GSM purposes. JSON Data Type: String Values accepted:
  • “false”
  • “true” isSmsCapable Determines if the current device supports SMS service. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 21 or higher. No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters

/ 73 Group or Identifier A025 Element isTtyModeSupported A026 isVoiceCapable A027 isWorldPhone Description Comments Permissions Determines whether the phone supports TTY mode. JSON Data Type: String Values accepted:

  • “false”
  • “true” Determines if the current device is “voice-capable”. JSON Data Type: String Values accepted:
  • “false”
  • “true” Determines whether the device is a world phone. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only from API level 23 to API level 27. Deprecated in API level 28. From API level 28 onwards use TelecomManager.isTtySupported(). Available only for API level 22 or higher. Available only for API level 23 or higher. No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A138 A139 A140 A141 A142 Element Description Comments simCarrierId simCarrierIdName Provides a platform-wide unique identifier for each carrier. Length: Variable, maximum 11 characters JSON Data Type: String Values accepted:

  • Integer coded as a string Provides user-facing name of the specific carrier ID. JSON Data Type: String manufacturerCode Provides the Manufacturer code from the Mobile Equipment Identifier. JSON Data Type: String simSpecificCarrierId Provides the carrier ID of the current subscription. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:
  • Integer coded as a string simSpecificCarrierIdN ame Provides the user-facing name of the specific carrier ID. JSON Data Type: String Available only for API level 28 or higher Available only for API level 28 or higher Available only for API level 29 or higher Available only for API level 29 or higher Available only for API level 29 or higher / 73 Permissions No permissions required No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters

/ 73 Group or Identifier A143 Element multiSimSupported A145 subscriptionId WifiManager A028 Wifi - Mac Address Description Comments Permissions Indicates if the ability to register multiple SIM cards simultaneously on the network is supported by the device and by the carrier. Length: 1 character JSON Data Type: String Values accepted:

  • “0”
  • “1”
  • “2” Returns the subscription ID for the given phone account. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:
  • Integer coded as a string WifiManager provides the primary API for managing all aspects of Wi-Fi connectivity. Available only for API level 29 or higher Available only for API level 30 or higher This group of parameters requires the following permission: android.permission.ACCESS_WIFI_STATE Installation-time permissions No permissions required Installation-time permissions Returns the wireless MAC address of the device. JSON Data Type: String For API level 31 or higher, set to RE04 in the DPNA. Installation-time permissions

1.6 Device Identification Parameters Group or Identifier A029 A030 A031 A032 Element BSSID SSID Network ID is5GHzBandSupported Description Comments Returns the Basic Service Set Identifier (BSSID) of the current access point. JSON Data Type: String Returns the Service Set Identifier (SSID) of the current 802.11 network. JSON Data Type: String Each configured network has a unique small integer ID, used to identify the network when performing operations on the supplicant. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:

  • Integer coded as a string Determines if this adapter supports the 5 GHz band. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 21 or higher. / 73 Permissions Installation-time permissions Installation-time permissions Installation-time permissions Installation-time permissions

1.6 Device Identification Parameters

/ 73 Group or Identifier Element Description Comments Permissions A033 A034 A035 A036 isDeviceToApRttSuppor ted Determines if this adapter supports Device-to-AP RTT. JSON Data Type: String Values accepted:

  • “false”
  • “true” Available only for API level 21 or higher. Deprecated in API level 29. Use PackageManager.hasSystemFeature() with PackageManager.FEATURE_WIFI_RTT. Installation-time permissions isEnhancedPowerReport ingSupported Determines if this adapter supports advanced power and performance counters. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 21 or higher. Installation-time permissions isP2pSupported Determines if this adapter supports WifiP2pManager. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 21 or higher. Installation-time permissions isPreferredNetworkOff loadSupported Determines if this adapter supports offloaded connectivity scan. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 21 or higher. Installation-time permissions

1.6 Device Identification Parameters

/ 73 Group or Identifier A037 A038 A146 A147 Element Description Comments Permissions isScanAlwaysAvailable Determines if scanning is always available. JSON Data Type: String Values accepted:

  • “false”
  • “true” Available only for API level 18 or higher. Deprecated in API level 29; ability for apps to trigger scan requests will be removed in a future Android release. isTdlsSupported Determines if this adapter supports Tunnel Directed Link Setup. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 21 or higher. is6GHzBandSupported Returns a Boolean if 6GHz band is supported. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 30 or higher. passpointFqdn Returns the fully qualified domain name of the network if it is a Passpoint network. JSON Data Type: String Available only for API level 29 or higher. Installation-time permissions Installation-time permissions Run-time permission required Run-time permission required

1.6 Device Identification Parameters

/ 73 Group or Identifier A148 Bluetooth Manager A039 Element Description Comments passpointProviderFrie ndlyName Returns the Provider Friendly Name of the network if it is a Passpoint network. JSON Data Type: String Available only for API level 29 or higher. Bluetooth Manager is used to conduct overall Bluetooth Management. Through Bluetooth Adapter, it facilitates fundamental Bluetooth tasks, such as initiate device discovery, query a list of bonded (paired) devices, initiate a BluetoothDevice using a known MAC address, and create a BluetoothServerSocket to listen for connection requests from other devices, and start a scan for Bluetooth Low Energy (LE) devices. This group of parameters requires the following permission: android.permission.BLUETOOTH Address Hardware MAC address of the local Bluetooth adapter. Example: 00:00:56:B1:C0:6E JSON Data Type: String Values accepted:

  • 48 bits represented as 6 hexadecimal bytes separated by “:” (colon hexadecimal notation) Available only for API level 18 or higher. Permissions Run-time permission required Installation-time permissions Installation-time permissions AND Run-time permissions

1.6 Device Identification Parameters Group or Identifier A040 Element BondedDeviceMac A149 BondedDevicesAlias A041 isEnabled Description Comments Returns the array of BluetoothDevice MAC address that are bonded (paired) to the local adapter. Example: [“48:F0:7B:61:DD:D4”, “ED:90:C2:3D:E8:14”] JSON Data Type: Array of String Values accepted:

  • 48 bits represented as 6 hexadecimal bytes separated by “:” (colon hexadecimal notation) Returns the array of BluetoothDevice alias coded as a string that are bonded (paired) to the local adapter. JSON Data Type: Array of String Available only for API level 18 or higher. Available only for API level 30 or higher. Returns true if Bluetooth is currently enabled and ready for use. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 18 or higher. / 73 Permissions Installation-time permissions AND Run-time permissions Installation-time permissions AND Run-time permissions Installation-time permissions

1.6 Device Identification Parameters Group or Identifier Build Element A042 BOARD A043 BOOTLOADER A044 BRAND A045 A046 A047 DEVICE DISPLAY FINGERPRINT Description Build is used to determine information about the current build, extracted from system properties. Name of the underlying board, such as “goldfish”. JSON Data Type: String System bootloader version number. JSON Data Type: String Consumer-visible brand with which the product/hardware will be associated, if any. JSON Data Type: String Name of the industrial design. JSON Data Type: String Build ID string that is displayed to the user. JSON Data Type: String String that uniquely identifies this build. JSON Data Type: String Comments

/ 73 Permissions No permissions required No permissions required No permissions required No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters

/ 73 Group or Identifier A048 Element HARDWARE A049 ID A050 MANUFACTURER A051 A052 PRODUCT RADIO A053 SERIAL A153 SKU Description Comments Permissions Name of the hardware (from the kernel command line or /proc). JSON Data Type: String Either a changelist number or a label like “M4-rc20”. JSON Data Type: String Manufacturer of the product/hardware. JSON Data Type: String Name of the overall product. JSON Data Type: String Radio firmware version number using getRadioVersion(). JSON Data Type: String Hardware serial number, if available. JSON Data Type: String Deprecated in API level 26. From API level 26 onwards use getSerial(). API level 29 or higher throws SecurityException or returns null. Set to RE04. The SKU of the hardware (from the Available only for API level 31 or higher. kernel command line). JSON Data Type: String No permissions required No permissions required No permissions required No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A154 A155 A054 A055 A056 Element Description Comments SOC_MANUFACTURER The manufacturer of the device’s primary system-on-chip. JSON Data Type: String Available only for API level 31 or higher. SOC_MODEL The model name of the device’s primary system-on-chip. JSON Data Type: String Available only for API level 31 or higher. SUPPORTED_32_BIT_ABIS Ordered list of 32-bit Application Binary Interfaces (ABIs) supported by this device. The most preferred ABI is the first element in the list. JSON Data Type: Array of String Available only for API level 21 or higher. SUPPORTED_64_BIT_ABIS Ordered list of 64-bit ABIs supported by this device. The most preferred ABI is the first element in the list. JSON Data Type: Array of String Available only for API level 21 or higher. TAGS Comma-separated tags describing the build, such as “unsigned,debug”. JSON Data Type: String

/ 73 Permissions No permissions required No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A057 TIME Element A058 A059 TYPE USER Description Build time. JSON Data Type: String Length: Variable, maximum 20 characters Value accepted:

  • Positive long integer coded as a string Type of build, such as “user” or “eng”. JSON Data Type: String JSON Data Type: String Build.VERSI ON A060 CODENAME A061 INCREMENTAL Build.VERSION indicates various version strings. The current development codename, or the string “REL” if this is a release build. JSON Data Type: String The internal value used by the underlying source control to represent this build. JSON Data Type: String Comments / 73 Permissions No permissions required No permissions required No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A062 Element PREVIEW_SDK_INT A063 SDK_INT A064 SECURITY_PATCH Settings Secure Description Comments The developer preview revision of a pre-release SDK. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:

  • Positive integer coded as a string The user-visible SDK version of the framework; its possible values are defined in Build.VERSION_CODES. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:
  • Positive integer coded as a string The user-visible security patch level. JSON Data Type: String Available only for API level 23 or higher. Available only for API level 23 or higher. Secure system settings containing system preferences that applications can read but are not allowed to write. / 73 Permissions No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A065 A066 A067 A068 Element Description Comments ACCESSIBILITY_DISPLAY _INVERSION_ENABLED Specifies whether display colour inversion is enabled. JSON Data Type: String Values accepted:

  • “false”
  • “true” ACCESSIBILITY_ENABLED Specifies whether accessibility is enabled. JSON Data Type: String Values accepted:
  • “false”
  • “true” ACCESSIBILITY_SPEAK_P ASSWORD Specifies whether to speak passwords while in accessibility mode. JSON Data Type: String Values accepted:
  • “false”
  • “true” ALLOWED_GEOLOCATION_O RIGINS Origins for which browsers should allow geolocation by default. The value is a space-separated list of origins. JSON Data Type: String Available only for API level 21 or higher. Deprecated in API level 26. / 73 Permissions No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A069 A071 A073 A074 A075 Element Description ANDROID_ID DEFAULT_INPUT_METHOD A 64-bit number (expressed as a hexadecimal string), unique to each combination of app-signing key, user, and device. Values of ANDROID_ID are scoped by signing key and user. The value may change if a factory reset is performed on the device or if an APK signing key changes. JSON Data Type: String Value accepted:

  • 8-byte hexadecimal [0-9,a-f,AF] Setting to record the input method used by default. JSON Data Type: String ENABLED_ACCESSIBILITY _SERVICES List of enabled accessibility providers. JSON Data Type: Array of String ENABLED_INPUT_METHODS List of input methods that are currently enabled. JSON Data Type: Array of String INPUT_METHOD_SELECTOR _VISIBILITY Setting to record the visibility of the input method selector. JSON Data Type: String Comments / 73 Permissions No permissions required No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters

/ 73 Group or Identifier A076 A077 A078 Element Description Comments Permissions INSTALL_NON _MARKET_APPS LOCATION_MODE SKIP_FIRST_USE_HINTS Specifies whether applications can be installed for this user via the system’s ACTION_INSTALL_PACKAGE mechanism. JSON Data Type: String Values accepted:

  • “false”
  • “true” Settings.Security.INSTALL_NON_MARKET _APPS constant deprecated in API level 17. ACTION_INSTALL_PACKAGE mechanism deprecated in API level 29. From API level 29 onwards use PackageManager.canRequestPackageInst alls() Note: canRequestPackageInstalls()needs Run-time permissions (android.permission.REQUEST_INSTALL_PACK AGES). If no permission, set to RE03 in the DPNA. No permissions required Degree of location access enabled by the end user. JSON Data Type: String Deprecated in API level 28. From API level 28 onwards use LocationManager.isLocationEnabled() No permissions required If enabled, apps should try to skip any introductory hints on first launch. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 21 or higher. No permissions required

1.6 Device Identification Parameters Group or Identifier A079 A080 A081 Element Description Comments SYS_PROP_SETTING_VERS ION Secure system settings, containing system preferences that applications can read but are not allowed to write. JSON Data Type: String Available only for API levels below 24. TTS_DEFAULT_PITCH TTS_DEFAULT_RATE Default text-to-speech engine pitch. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:

  • Positive integer coded as a string Default text-to-speech engine speech rate. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:
  • Positive integer coded as a string / 73 Permissions No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A082 A083 A150 A151 Element TTS_DEFAULT_SYNTH TTS_ENABLED_PLUGINS RTT_CALLING_MODE SECURE_FRP_MODE Description Comments Default text-to-speech engine. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:

  • Positive integer coded as a string Space-delimited list of plugin packages that are enabled. JSON Data Type: String User-selected Real-Time Text (RTT) mode. JSON Data Type: String Values accepted:
  • “false”
  • “true” Indicates whether the device is in restricted secure Factory Reset Protection (FRP) mode. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 28 or higher. Available only for API level 30 or higher. / 73 Permissions No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier Settings Global A084 A085 A086 Element Description Comments Global system settings containing preferences that always apply identically to all defined users. ADB_ENABLED AIRPLANE_MODE_RADIOS Specifies whether Android Debug Bridge (ADB) is enabled. JSON Data Type: String Values accepted:

  • “false”
  • “true” Comma-separated list of radios that need to be disabled when airplane mode is on. JSON Data Type: String Available only for API level 17 or higher. Available only for API level 17 or higher. ALWAYS_FINISH_ACTIVIT IES If 1, the activity manager will aggressively finish activities and processes as soon as they are no longer needed. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 17 or higher. / 73 Permissions No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A087 A088 A089 Element Description Comments ANIMATOR_DURATION_SCA LE Scaling factor for animator-based animations. JSON Data Type: String Value accepted:

  • Floating-point number coded as a string Available only for API level 17 or higher. AUTO_TIME Value to specify whether the user prefers the date, time and time zone to be automatically fetched from the network. Refer to Network Identity and Time Zone (NITZ). JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 17 or higher. AUTO_TIME_ZONE Value to specify whether the user prefers the time zone to be automatically fetched from the network. Refer to NITZ. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 17 or higher. / 73 Permissions No permissions required No permissions required No permissions required

1.6 Device Identification Parameters

/ 73 Group or Identifier A070 A090 A072 A091 A092 Element Description Comments Permissions DATA_ROAMING Determines whether data roaming is enabled. JSON Data Type: String Values accepted:

  • “false”
  • “true” Available only for API level 17 or higher. Note: TelephonyManager.isDataRoamingEnable d()may also be used. DEVELOPMENT_SETTINGS_ ENABLED Determines whether the end user has enabled development settings. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 17 or higher. DEVICE_PROVISIONED Determines whether the device has been provisioned. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 17 or higher. HTTP_PROXY Host name and port for global HTTP proxy. JSON Data Type: String Available only for API level 17 or higher. No permissions required No permissions required No permissions required No permissions required NETWORK_PREFERENCE User preference for which networks should be used. JSON Data Type: String Available only for API level 17 or higher. No permissions required

1.6 Device Identification Parameters Group or Identifier A093 A094 A095 A096 Element Description Comments STAY_ON_WHILE_PLUGGED _IN Determines whether the device must remain switched on while it is plugged in. JSON Data Type: String Value accepted:

  • Integer in the range of 0 to 15, coded as a string Available only for API level 17 or higher. TRANSITION_ANIMATION_ SCALE Scaling factor for activity transition animations. JSON Data Type: String Value accepted:
  • Floating-point number coded as a string Available only for API level 17 or higher. USB_MASS_STORAGE_ENAB LED Indicates whether USB mass storage is enabled. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 17 or higher. USE_GOOGLE_MAIL If this setting is set (to anything), then all references to Gmail on the device must change to Google Mail. JSON Data Type: String Available only for API level 17 or higher. / 73 Permissions No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters

/ 73 Group or Identifier A097 A098 A152 Settings System Element Description Comments Permissions WAIT_FOR_DEBUGGER If 1, when launching DEBUG_APP, it will wait for the debugger before starting user code. JSON Data Type: String Values accepted:

  • “false”
  • “true” WIFI_NETWORKS_AVAILAB LE_NOTIFICATION_ON Determines whether the end user should be notified of open networks. JSON Data Type: String Values accepted:
  • “false”
  • “true” APPLY_RAMPING_RINGER Indicates if ramping ringer is enabled on incoming call ringtone. JSON Data Type: String Values accepted:
  • “false”
  • “true” System settings containing miscellaneous system preferences. Available only for API level 17 or higher. Deprecated in API level 26. Available only for API level 29 or higher, deprecated in API level 33. From API level 33 onwards, use AudioManager.isRampingRingerEnabled()” No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A099 A100 A101 Element Description ACCELEROMETER_ROTATIO N Control whether the accelerometer will be used to change screen orientation. JSON Data Type: String Values accepted:

  • “false”
  • “true” BLUETOOTH_DISCOVERABI LITY Determines whether remote devices may discover and/or connect to this device. JSON Data Type: String Values accepted:
  • “0”
  • “1”
  • “2” BLUETOOTH_DISCOVERABI LITY_TIMEOUT Bluetooth discoverability timeout. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:
  • Positive integer coded as a string Comments / 73 Permissions No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A102 A103 A104 Element Description Comments DATE_FORMAT Date format. JSON Data Type: String Values accepted:

  • mm/dd/yyyy
  • dd/mm/yyyy
  • yyyy/mm/dd DTMF_TONE_TYPE_WHEN_D IALING CDMA-only settings + DTMF tone type played by the dialler when dialling. JSON Data Type: String Values accepted:
  • “false”
  • “true” DTMF_TONE_WHEN_DIALIN G Specifies whether the audible DTMF tones are played by the dialler when dialling. JSON Data Type: String Values accepted:
  • “false”
  • “true” Deprecated in API level 31 From API level 31 onwards, use A120 TIME_12_24. Available only for API level 23 or higher. / 73 Permissions No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A105 A106 A107 Element Description Comments END_BUTTON_BEHAVIOR The behaviour when the user presses the end call button if they are not on a call. JSON Data Type: String Values accepted:

  • “0”
  • “1”
  • “2”
  • “3” FONT_SCALE Scaling factor for fonts. JSON Data Type: String Value accepted:
  • Positive Floating-point number coded as a string HAPTIC_FEEDBACK_ENABL ED Specifies whether the haptic feedback (long presses) is enabled. JSON Data Type: String Values accepted:
  • “false”
  • “true” Deprecated in API level 33 / 73 Permissions No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A108 A109 A110 A111 Element Description MODE_RINGER_STREAMS_A FFECTED Determines which streams are affected by ringer mode changes. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:

  • Positive integer coded as a string NOTIFICATION_SOUND Persistent store for the systemwide default notification sound. JSON Data Type: String MUTE_STREAMS_AFFECTED Determines which streams are affected by mute. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:
  • Positive integer coded as a string RINGTONE Persistent store for the systemwide default ringtone URI. JSON Data Type: String Comments / 73 Permissions No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters

/ 73 Group or Identifier A112 A113 A114 Element Description SCREEN_BRIGHTNESS Screen backlight brightness between 0 and 255. Length: Variable, maximum 3 characters JSON Data Type: String Value accepted:

  • Integer in the range of 0 to 255, coded as a string SCREEN_BRIGHTNESS_MOD E Control whether to enable automatic brightness mode. JSON Data Type: String Values accepted:
  • “false”
  • “true” SCREEN_OFF_TIMEOUT The amount of time in milliseconds before the device goes to sleep or begins to dream after a period of inactivity. This value is also known as the user activity timeout period since the screen is not necessarily turned off when it expires. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:
  • Positive integer coded as a string Comments Permissions No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A115 A116 A117 A118 Element Description SOUND_EFFECTS_ENABLED Specifies whether sound effects (key clicks, lid open) are enabled. JSON Data Type: String Values accepted:

  • “false”
  • “true” TEXT_AUTO_CAPS Setting to enable Auto Caps in text editors. JSON Data Type: String Values accepted:
  • “false”
  • “true” TEXT_AUTO_PUNCTUATE Setting to enable Auto Punctuate in text editors. JSON Data Type: String Values accepted:
  • “false”
  • “true” TEXT_AUTO_REPLACE Setting to enable Auto Replace (AutoText) in text editors. JSON Data Type: String Values accepted:
  • “false”
  • “true” Comments / 73 Permissions No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A119 Element TEXT_SHOW_PASSWORD A120 TIME_12_24 A121 USER_ROTATION Description Setting to show password characters in text editors. JSON Data Type: String Values accepted:

  • “false”
  • “true” Display time in the 12-hour format or the 24-hour format. JSON Data Type: String Values accepted:
  • “12”
  • “24” Default screen rotation when no other policy applies. JSON Data Type: String Values accepted:
  • “0”
  • “1”
  • “2”
  • “3” Comments / 73 Permissions No permissions required No permissions required No permissions required

1.6 Device Identification Parameters Group or Identifier A122 A123 Package Manager A124 Element Description Comments VIBRATE_ON VIBRATE_WHEN_RINGING isSafeMode Specifies whether vibrate is on for different events. JSON Data Type: String Values accepted:

  • “false”
  • “true” Specifies whether the phone vibrates when it is ringing during an incoming call. JSON Data Type: String Values accepted:
  • “false”
  • “true” Package Manager is used to retrieve various kinds of information related to the application packages that are currently installed on the device. Returns whether the device has been booted into safe mode. JSON Data Type: String Values accepted:
  • “false”
  • “true” Available only for API level 23 or higher. Deprecated in API level 33. / 73 Permissions No permissions required No permissions required No permissions required No permissions required

1.6 Device Identification Parameters

/ 73 Group or Identifier A125 A126 A127 Element Description Comments Permissions getInstalledApplicati ons Returns an array of non-system application packages that are installed on the device. JSON Data Type: Array of String Include only packages that do not have ApplicationInfo.FLAG_SYSTEM set. Run-time permissions getInstallerPackageNa me Retrieves the package name of the application that installed a package. This identifies which market the package came from. JSON Data Type: String Indirectly, this field can be used to determine whether the application has been installed from a trusted source. getInstallingPackageName() deprecated in API level 30. From API level 30 onwards, use getInstallSourceInfo(). No permissions required getSystemAvailableFea tures Retrieves a list of features that are available on the device. The 3DS SDK shall share only the count of items in this list and not the full list itself. Length: Variable, maximum 11 characters JSON Data Type: String Value accepted:

  • Positive integer coded as a string No permissions required © 2017–2023 EMVCo, LLC. All rights reserved. Reproduction, distribution and other use of this d

Shown in part. Read the original for the full text.