Di mana saya dapat menemukan ANDROID_ID di perangkat saya?

11

Saya tahu bahwa Anda dapat menemukan IMEI dan alamat MAC dan lainnya dengan mengunjungi Settings -> About phone -> Status. Anda juga dapat menemukan IMEI dengan mengetik *#06#di papan tombol. Apakah ada cara untuk mendapatkan ANDROID_ID di telepon itu sendiri, sebagai lawan melalui sedikit kode ini?

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

Jawaban:

8

Anda dapat melakukannya melalui adb. Tidak memerlukan root, sejauh yang saya tahu (diuji pada Galaxy Nexus yang menjalankan 4.2.1 dibangun dari sumber 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
sumber
2
Jika berjalan melalui aplikasi emulator terminal, root diperlukan.
Liam W
adb memiliki lebih banyak hak istimewa daripada pengguna shell lokal. Dengan Android 4.x (ICS dan lebih tinggi), Anda bahkan dapat melakukan pencadangan penuh melalui ADB pada perangkat yang tidak di-root - yang pasti tidak dapat dilakukan oleh pengguna shell.
Izzy
6

settings get secure android_iddari adb shelladalah yang paling sederhana, saya menemukan - tidak ada output yang asing dan tidak memerlukan root. (Dari terminal reguler di perangkat, root diperlukan.)

shell@mydevice:/ $ settings get secure android_id
0123456789abcdef
shell@mydevice:/ $ 
Matius Baca
sumber
Untuk masuk ke adb shell: 1. Pergi ke android_sdk/platform-tools/dengan cmd atau terminal lain. 2. adb devicesuntuk memeriksa apakah ponsel Anda dapat ditemukan melalui USB. 3 adb shell.. 4. Jalankan perintah dalam jawaban ini.
NumesSanguis
2

Karena varian eldarerathis tidak berfungsi untuk saya, dan saya tidak ingin menginstal aplikasi hanya untuk itu, saya telah menemukan cara yang berbeda. Hanya kelemahan yang mungkin: Ini membutuhkan 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

Itu android_idditemukan di kolom ketiga di sini (dianonimkan dalam contoh).


EDIT:

Catatan bahwa ini adalah TIDAK yang android_iddigunakan oleh aplikasi Google. Google tampaknya telah memutuskan untuk beberapa kebingungan di sini. Untuk Play Services , ada android_idpenyimpanan terpisah oleh GTalk , seperti yang ditunjukkan oleh sebuah posting blog (juga lihat jawaban ini oleh HassleFixes , yang merupakan autor dari StripSearch , dan untungnya menunjukkan hal ini dalam komentar):

  • panggil dialer Anda
  • panggil *#*#8255#*#*
  • perhatikan "Device ID"
  • hapus yang utama android-
  • yang tersisa, adalah yang android_iddigunakan oleh Layanan Google

Saya telah memverifikasi bahwa: cara yang android_iddiambil ini berfungsi dengan baik pada perangkat tanpa Google-Apps diinstal (digunakan dengan BlankStore yang disediakan oleh proyek NOGAPPS ).

Izzy
sumber
2

Jawaban di atas ada $ content query --uri content://settings/secure --projection value --where "name='android_id'"di dalamnya

Jika Anda mengeksekusi ini dari shell maka Anda harus menghindari tanda kutip di sekitar android_id jika tidak mereka ditafsirkan dan pernyataan SQL tidak memilikinya, menghasilkan kolom yang tidak diketahui.

Perintah lengkap saya dari bash looks line ...
$ adb shell content query --uri content://settings/secure --projection value --where "name=\'android_id\'"

^ Tidak cukup reputasi untuk mengomentari jawaban yang menyarankannya di atas

chrisinajar
sumber
Agak. Jawaban @ eldarerathis memulai sebuah shell pada perangkat dengan adb shell, dan kemudian menjalankan perintah lain di dalam shell itu. Ini berfungsi dengan baik tanpa lolos dari kutipan. Jawaban Anda menjalankan satu perintah pada mesin utama; untuk ini, Anda perlu melarikan diri dari kutipan.
Mark