Де я можу знайти ANDROID_ID на своєму пристрої?


11

Я знаю, що ви можете знайти IMEI та MAC-адреси та інші, перейшовши на сторінку Settings -> About phone -> Status. Ви також можете знайти IMEI, ввівши *#06#на клавіатурі. Чи є спосіб отримати ANDROID_ID на самому телефоні, на відміну від цього біта коду?

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

Відповіді:


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:/ $

2
Якщо запускається через додаток емулятора терміналу, потрібен root.
Ліам Ш

adb має більше привілеїв, ніж місцевий користувач оболонки. За допомогою Android 4.x (ICS та новіших версій) ви навіть можете зробити повне резервне копіювання через ADB на не вкоріненому пристрої - чого користувач оболонки точно не може.
Izzy

6

settings get secure android_idз adb shell- це найпростіше, я вважаю, що немає сторонніх результатів і не вимагає root. (Зі звичайного терміналу на пристрої потрібний 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

Оскільки eldarerath цей варіант для мене не вийшов, і я не хотів встановлювати додаток саме для цього, я знайшов інший спосіб. Єдиний можливий недолік: для цього потрібен 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

android_idЗнаходиться в третій колонці тут (анонімної в прикладі).


Редагувати:

Зверніть увагу , що це НЕandroid_id використовується в додатках Google. Google, схоже, тут вирішив певну плутанину. Для Play Services , є окремий android_idзберігається GTalk , як і вказував у блозі (також див ця відповідь на HassleFixes , який є Автор з StripSearch , і , до щастя вказував на це в коментарях):

  • зателефонуйте до телефону
  • циферблат *#*#8255#*#*
  • стежте за "Ідентифікатором пристрою"
  • видалити провідні android-
  • Що залишається, - це android_idвикористання Служб Google

Я перевірив це: android_idотриманий таким чином працює чудово на пристрої без встановлених Google-додатків (використовується з 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\'"

^ Недостатньо репутації, щоб прокоментувати відповідь, яка її запропонувала вище


Типу. @ eldarerathis відповідь запустив оболонку на пристрої adb shell, а потім запустив іншу команду в цій оболонці. Це прекрасно працює, не уникаючи цитат. Ваша відповідь - це виконання однієї команди на головній машині; для цього вам потрібно уникати цитат.
Марк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.