Где я могу найти ANDROID_ID на моем устройстве?

11

Я знаю, что вы можете найти IMEI и MAC-адрес и другие, перейдя на Settings -> About phone -> Status. Вы также можете найти IMEI, набрав *#06#на клавиатуре. Есть ли способ получить ANDROID_ID на самом телефоне, в отличие от этого кода?

Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);
Kalinka
источник

Ответы:

8

Вы можете сделать это через adb. Насколько я знаю, рут не требуется (тестируется на Galaxy Nexus под управлением 4.2.1, созданным из 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
источник
2
При запуске через приложение эмулятора терминала требуется root.
Лиам W
У adb больше привилегий, чем у локального пользователя оболочки. С Android 4.x (ICS и выше) вы можете даже сделать полное резервное копирование через ADB на некорневом устройстве - что пользователь оболочки наверняка не может.
Иззи
6

settings get secure android_idИз adb shellсамого простого, я нахожу - никакого постороннего вывода и рута не требуется. (С обычного терминала на устройстве требуется root.)

shell@mydevice:/ $ settings get secure android_id
0123456789abcdef
shell@mydevice:/ $ 
Мэтью Рид
источник
Чтобы войти в оболочку adb: 1. Перейдите с android_sdk/platform-tools/помощью cmd или другого терминала. 2. adb devicesпроверить, можно ли найти ваш мобильный через USB. 3 adb shell.. 4. Запустите команду в этом ответе.
NumesSanguis
2

Поскольку этот вариант мне не удался , и я не хотел устанавливать приложение только для этого, я нашел другой способ. Единственный возможный недостаток: требуется рут.

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

Здесь android_idнаходится в третьем столбце (анонимно в примере).


РЕДАКТИРОВАТЬ:

Обратите внимание , что это НЕandroid_id используемый в приложениях Google. Кажется, Google решил, что здесь возникла путаница. Для Play Services есть отдельное android_idхранилище, хранящееся в GTalk , как указано в сообщении в блоге (см. Также этот ответ HassleFixes , который является автором StripSearch , и, к счастью, указал это в комментариях):

  • позвони своему дозвонщику
  • набирать номер *#*#8255#*#*
  • следите за "Идентификатор устройства"
  • удалить ведущий android-
  • что остается, это android_idиспользуется Сервисами Google

Я убедился, что: android_idполученный таким образом работает нормально на устройстве без установленных Google-Apps (используется с BlankStore, предоставленным проектом NOGAPPS ).

Иззи
источник
2

Приведенный выше ответ имеет $ content query --uri content://settings/secure --projection value --where "name='android_id'"в нем

Если вы выполняете это из оболочки, вам нужно будет избегать кавычек вокруг android_id, иначе они интерпретируются, а в выражении SQL их нет, что приводит к появлению неизвестного столбца.

Моя полная команда от bash выглядит строчкой ...
$ adb shell content query --uri content://settings/secure --projection value --where "name=\'android_id\'"

^ Недостаточно репутации, чтобы прокомментировать ответ, который предложил это выше

chrisinajar
источник
Вроде. Ответ @ eldarerathis запустил на устройстве оболочку adb shell, а затем запустил другую команду в этой оболочке. Это прекрасно работает, не выходя из кавычек. Ваш ответ запускает одну команду на главном компьютере; для этого вам нужно избежать кавычек.
Отметить