¿Cómo obtener el IMEI/ESN del dispositivo mediante programación en Android?

Resuelto Tom asked hace 54 años • 22 respuestas

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?

Tom avatar Jan 01 '70 08:01 Tom
Aceptado

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).

Trevor Johns avatar Dec 29 '2009 01:12 Trevor Johns

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.

Taner avatar Jun 09 '2010 19:06 Taner