Here are various IDs can be obtained programmatically on Android that can be used to identify a device or installation. I’ve tried to provide a little bit of information about each one and what permissions are required to obtain it.
Identifier | Example Value | Permission Required |
---|---|---|
Android ID via Settings.Secure | 2fc4b5912826ad1 | NONE |
Android Build.SERIAL | HT6C90202028 | NONE |
Android Build.MODEL | Pixel XL | NONE |
Android Build.BRAND | NONE | |
Android Build.MANUFACTURER | NONE | |
Android Build.DEVICE | marlin | NONE |
Android Build.PRODUCT | marlin | NONE |
IMEI | 352698276144152 | READ_PHONE_STATE |
Phone Number | 2028675309 | READ_PHONE_STATE or READ_SMS |
ICCID (Sim Serial Number) | 311477629513071 | READ_PHONE_STATE |
Android ID via Settings.Secure
This is a 64-bit quantity that is generated and stored when the device first boots. It is reset when the device is wiped. It is unique device-wide per OS install, but only unique per application starting with Android O (with old applications grandfathered in).
String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
Android Build.SERIAL
Since Android 2.3 (“Gingerbread”) this is available via android.os.Build.SERIAL. Devices without telephony are required to report a unique device ID here; some phones may do so also.
A hardware serial number, if available. Alphanumeric only, case-insensitive.
String serial = android.os.Build.SERIAL;
Android Build.MODEL
The end-user-visible name for the end product.
String model = android.os.Build.MODEL;
Android Build.BRAND
The consumer-visible brand with which the product/hardware will be associated, if any.
String brand = android.os.Build.BRAND;
Android Build.MANUFACTURER
The manufacturer of the product/hardware.
String manufacturer = android.os.Build.MANUFACTURER;
Android Build.DEVICE
The name of the industrial design.
String device = android.os.Build.DEVICE;
Android Build.PRODUCT
The name of the overall product.
String product = android.os.Build.PRODUCT;
IMEI (International Mobile Equipment Identity)
Returns the unique device ID, for example, the IMEI for GSM and the MEID or ESN for CDMA phones. Return null if device ID is not available.
String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
Phone Number
Returns the phone number string for line 1, for example, the MSISDN or a GSM phone. Return null if it is unavailable.
String phoneNumber = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getLine1Number();
ICCID (Sim Serial Number)
Returns the serial number of the SIM, if applicable. Return null if it is unavailable.
String iccid = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getSubscriberId();
Related Links: