¿Dónde puedo encontrar el ANDROID_ID en mi dispositivo?

11

Sé que puede encontrar la dirección IMEI y MAC y otras visitando Settings -> About phone -> Status. También puede encontrar IMEI escribiendo *#06#en el teclado. ¿Hay alguna forma de obtener el ANDROID_ID en el teléfono, en lugar de a través de este bit de código?

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

Respuestas:

8

Puedes hacerlo a través de adb. No requiere root, que yo sepa (probado en un Galaxy Nexus con 4.2.1 construido a partir de una fuente 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
fuente
2
Si se ejecuta a través de una aplicación de emulador de terminal, se requiere root.
Liam W
adb tiene más privilegios que el usuario del shell local. Con Android 4.x (ICS y versiones posteriores), incluso puede hacer una copia de seguridad completa a través de ADB en un dispositivo no rooteado, que el usuario de shell seguramente no puede.
Izzy
6

settings get secure android_iddesde adb shelles el más simple, creo que no hay salida extraña y no requiere root. (Desde un terminal regular en el dispositivo, se requiere root).

shell@mydevice:/ $ settings get secure android_id
0123456789abcdef
shell@mydevice:/ $ 
Matthew Read
fuente
Para entrar en adb shell: 1. Vaya a android_sdk/platform-tools/con cmd u otro terminal. 2. adb devicespara verificar si su móvil se puede encontrar a través de USB. 3 adb shell.. 4. Ejecute el comando en esta respuesta.
NumesSanguis
2

Como eldarera esta variante no funcionó para mí, y no quería instalar una aplicación solo por eso, he encontrado una forma diferente. Único inconveniente posible: requiere 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

El android_idse encuentra en la tercera columna aquí (anónimo en el ejemplo).


EDITAR:

Tenga en cuenta que este NO es el android_idutilizado por las aplicaciones de Google. Google parece haber decidido por cierta confusión aquí. Para Play Services , GTalkandroid_id almacena por separado , como lo señala una publicación de blog (también vea esta respuesta de HassleFixes , quien es el autor de StripSearch , y afortunadamente lo señaló en los comentarios):

  • llama a tu marcador
  • marcar *#*#8255#*#*
  • cuidado con la "ID del dispositivo"
  • eliminar el líder android-
  • lo que queda es el android_idutilizado por los servicios de Google

He verificado que: el android_idrecuperado de esta manera funciona bien en un dispositivo sin Google-Apps instalado (utilizado con el BlankStore proporcionado por el proyecto NOGAPPS ).

Izzy
fuente
2

La respuesta anterior tiene $ content query --uri content://settings/secure --projection value --where "name='android_id'"en ella

Si está ejecutando esto desde el shell, entonces deberá escapar de las comillas alrededor de android_id, de lo contrario, se interpretarán y la instrucción SQL no las tendrá, lo que dará como resultado una columna desconocida.

Mi comando completo de bash parece línea ...
$ adb shell content query --uri content://settings/secure --projection value --where "name=\'android_id\'"

^ No hay suficiente reputación para comentar la respuesta que lo sugirió anteriormente

chrisinajar
fuente
Mas o menos. La respuesta de @eldarerathis inició un shell en el dispositivo con adb shell, y luego ejecutó otro comando dentro de ese shell. Esto funciona bien sin escapar de las comillas. Su respuesta es ejecutar un solo comando en la máquina principal; para esto necesitas escapar de las comillas.
Mark