367 votes

Comment obtenir par programmation les dispositifs IMEI/ESN dans Android

Pour aider à identifier de manière unique chaque périphérique, je voudrais utiliser le numéro IMEI (ou numéro ESN pour appareils CDMA). Comment accéder par programme à cela ?

408voto

Trevor Johns Points 9310

Vous voulez appeler android.la téléphonie.TelephonyManager.getDeviceId().

Ce sera de retour quelle que soit la chaîne qui identifie l'appareil (IMEI sur GSM, MEID pour CDMA).

Vous aurez besoin de la

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

l'autorisation pour ce faire.

Cela étant dit, soyez prudent à ce sujet. Non seulement les utilisateurs se demandent pourquoi de votre demande d'accès à leurs téléphonie pile, il peut être difficile de migrer les données si l'utilisateur obtient un nouveau périphérique.

Mise à jour: Comme mentionné dans les commentaires ci-dessous, ce n'est pas un moyen sûr pour authentifier les utilisateurs, et soulève des problèmes de confidentialité. Il n'est pas recommandé. Au lieu de cela, regardez le Google+ Login API si vous souhaitez mettre en place un frottement système de connexion.

La Sauvegarde Android API est également disponible si vous voulez juste un léger moyen de conserver un ensemble de cordes pour quand un utilisateur réinitialise leur téléphone (ou achète un nouvel appareil).

289voto

Taner Points 2442

En plus de la réponse de Trevor Johns, vous pouvez utiliser cela comme suit :

Et vous devez ajouter l’autorisation suivante dans votre fichier Manifest.xml :

Dans l’émulateur, vous obtiendrez probablement un comme un « 00000... » valeur. getDeviceId() retourne la valeur NULL si les ID de périphérique n’est pas disponible.

64voto

Pinhassi Points 4297

J’utilise le code suivant pour obtenir le numéro IMEI ou utilisez Secure.ANDROID_ID comme alternative, lorsque l’appareil n’a pas les capacités de téléphone :

41voto

tonys Points 2334

Ou vous pouvez utiliser le ANDROID_ID paramètre à partir d'Android.Fournisseur de.Les paramètres.Système (comme décrit ici strazerre.com).

Ceci a l'avantage qu'il ne nécessite pas d'autorisations spéciales, mais peuvent changer si une autre application a accès en écriture et changements (ce qui est apparemment rare mais pas impossible).

Juste pour référence, voici le code à partir du blog:

import Android.Provider.Settings.System;   

String androidID = System.getString(this.getContentResolver(),System.ANDROID_ID);

La mise en œuvre remarque: si l'ID est essentielle à l'architecture du système, vous devez être conscient que, dans la pratique, certains des très bas de gamme des téléphones Android et les tablettes ont été trouvés en réutilisant les mêmes ANDROID_ID (9774d56d682e549c a de la valeur dans nos journaux)

35voto

alchemist Points 279

De: http://mytechead.wordpress.com/2011/08/28/how-to-get-imei-number-of-android-device/:

Le code suivant permet d'en obtenir IMEI nombre d'appareils android :

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

String device_id = tm.getDeviceId();

Autorisations requises dans le Manifeste Android:

android.permission.READ_PHONE_STATE

REMARQUE: Dans le cas de comprimés ou de dispositifs qui ne peuvent pas agir en tant que Téléphone Mobile IMEI sera nulle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X