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);
Kalinka
la source

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:/ $
eldarerathis
la source
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:/ $ 
Matthew Read
la source
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 ).

Izzy
la source
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

chrisinajar
la source
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