Où puis-je trouver l'ANDROID_ID sur mon appareil?


11

Je sais que vous pouvez trouver l'adresse IMEI et MAC et d'autres en allant sur Settings -> About phone -> Status. Vous pouvez également trouver IMEI en tapant *#06#sur le clavier. Existe-t-il un moyen d'obtenir l'ANDROID_ID sur le téléphone lui-même, plutôt que via ce morceau de code?

Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);

Réponses:


8

Vous pouvez le faire via adb. Ne nécessite pas de root, pour autant que je sache (testé sur un Galaxy Nexus exécutant 4.2.1 construit à partir d'une source AOSP):

shell@android:/ $ content query --uri content://settings/secure --projection value --where "name='android_id'"
  settings/secure --projection value --where "name='android_id'"                
  Row: 0 value=<your ID in hexadecimal>
shell@android:/ $

2
Si vous utilisez une application d'émulation de terminal, root est requis.
Liam W

adb a plus de privilèges que l'utilisateur shell local. Avec Android 4.x (ICS et plus), vous pouvez même faire une sauvegarde complète via ADB sur un appareil non rooté - ce que l'utilisateur shell ne peut certainement pas.
Izzy

6

settings get secure android_idà partir adb shellest le plus simple, je trouve - pas de sortie étrangère et ne nécessite pas la racine. (À partir d'un terminal standard sur l'appareil, le root est requis.)

shell@mydevice:/ $ settings get secure android_id
0123456789abcdef
shell@mydevice:/ $ 

Pour entrer dans le shell adb: 1. Allez android_sdk/platform-tools/avec cmd ou un autre terminal. 2. adb devicespour vérifier si votre mobile peut être trouvé via USB. 3 adb shell.. 4. Exécutez la commande dans cette réponse.
NumesSanguis

2

Comme la variante eldarerathis n'a pas fonctionné pour moi et que je ne voulais pas installer une application juste pour cela, j'ai trouvé une manière différente. Seul inconvénient possible: il nécessite un root.

adb shell
$ su
# cd /data/data/com.android.providers.settings/databases
# sqlite3 settings.db
sql> select * from secure where name='android_id';
26|android_id|1234567890abcdef1

Le android_idse trouve dans la troisième colonne ici (anonymisé dans l'exemple).


ÉDITER:

Notez que ce n'est PAS celui android_idutilisé par les applications Google. Google semble avoir décidé d'une certaine confusion ici. Pour Play Services , il y a un fichier séparé android_idstocké par GTalk , comme le souligne un article de blog (voir également cette réponse de HassleFixes , qui est l'auteur de StripSearch , et l'a heureusement souligné dans les commentaires):

  • appeler votre composeur
  • cadran *#*#8255#*#*
  • attention à "Device ID"
  • supprimer le début android-
  • ce qui reste, est android_idutilisé par les services Google

J'ai vérifié que: le android_idrécupéré de cette façon fonctionne correctement sur un appareil sans Google-Apps installé (utilisé avec le BlankStore fourni par le projet NOGAPPS ).


2

La réponse ci - dessus a $ content query --uri content://settings/secure --projection value --where "name='android_id'"en elle

Si vous exécutez cela à partir du shell, vous devrez échapper les guillemets autour de android_id, sinon ils seront interprétés et l'instruction SQL ne les aura pas, ce qui entraînera une colonne inconnue.

Ma commande complète de bash regarde la ligne ...
$ adb shell content query --uri content://settings/secure --projection value --where "name=\'android_id\'"

^ Pas assez de réputation pour commenter la réponse qui l'a suggérée ci-dessus


En quelque sorte. La réponse de @ eldarerathis a démarré un shell sur le périphérique avec adb shell, puis a exécuté une autre commande dans ce shell. Cela fonctionne bien sans échapper aux guillemets. Votre réponse exécute une seule commande sur la machine principale; pour cela, vous devez échapper aux citations.
Mark
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.