¿Cómo obtener el IMEI/ESN del dispositivo mediante programación en Android?
Para identificar cada dispositivo de forma única, me gustaría utilizar el IMEI (o número ESN para dispositivos CDMA). ¿Cómo acceder a esto mediante programación?
Quieres llamar android.telephony.TelephonyManager.getDeviceId()
.
Esto devolverá cualquier cadena que identifique de forma única el dispositivo (IMEI en GSM, MEID para CDMA).
Necesitará el siguiente permiso en su AndroidManifest.xml
:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
para hacer esto.
Dicho esto, tenga cuidado al hacer esto. Los usuarios no solo se preguntarán por qué su aplicación accede a su pila de telefonía, sino que también puede resultar difícil migrar datos si el usuario adquiere un nuevo dispositivo.
Actualización: como se menciona en los comentarios a continuación, esta no es una forma segura de autenticar usuarios y genera preocupaciones sobre la privacidad. No se recomienda. En su lugar, mire la API de inicio de sesión de Google+ si desea implementar un sistema de inicio de sesión sin fricciones.
La API de copia de seguridad de Android también está disponible si solo desea una forma ligera de conservar un conjunto de cadenas para cuando un usuario reinicia su teléfono (o compra un dispositivo nuevo).
Además de la respuesta de Trevor Johns, puedes usar esto de la siguiente manera:
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.getDeviceId();
Y debes agregar el siguiente permiso en tu archivo Manifest.xml:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
En el emulador, probablemente obtendrás un valor como "00000...". getDeviceId() devuelve NULL si el ID del dispositivo no está disponible.