ANDROID_IDはデバイスのどこにありますか?


11

にアクセスすると、IMEIやMACアドレスなどを見つけることができますSettings -> About phone -> Status*#06#キーパッドを入力してIMEIを見つけることもできます。このコードを使用するのではなく、電話自体でANDROID_IDを取得する方法はありますか?

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

回答:


8

これはを介して行うことができますadb。私の知る限り、ルートは必要ありません(AOSPソースから構築された4.2.1を実行するGalaxy Nexusでテスト済み):

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が必要です。
Liam W

adbには、ローカルシェルユーザーよりも多くの権限があります。Android 4.x(ICS以降)では、ルート化されていないデバイスでADBを介して完全バックアップを実行することもできます-シェルユーザーが確実に実行することはできません。
イジー

6

settings get secure android_idfrom adb shellが最も単純であると私は思います。無関係な出力はなく、ルートを必要としません。(デバイスの通常の端末からは、rootが必要です。)

shell@mydevice:/ $ settings get secure android_id
0123456789abcdef
shell@mydevice:/ $ 

adbシェルに入るには:1. android_sdk/platform-tools/cmdまたは他の端末でに移動します。2. adb devicesUSB経由で携帯電話が見つかるかどうかを確認します。3 adb shell。4.この回答でコマンドを実行します。
NumesSanguis

2

以下のようeldarerathisバリアントが私のためにうまくいかなかった、と私はそのためのアプリをインストールしたくなかった、私は別の方法を見つけました。考えられる唯一の欠点: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は、3番目の列にあります(例では匿名化されています)。


編集:

これはGoogleアプリでは使用されないことに注意してくださいandroid_id。グーグルはここでいくつかの混乱を決定したようです。以下のためにプレイサービス、独立した存在だandroid_idことにより、保存されたGoogleトークなど、ブログの記事による尖ったうちは(も参照HassleFixesでこの答えをするautorで、StripSearch、そしてありがたいコメントで、このうちの指摘しました):

  • ダイヤラを呼び出す
  • ダイヤルする *#*#8255#*#*
  • 「デバイスID」に注意する
  • 先頭を削除 android-
  • 残りは、Googleサービスでandroid_id使用されています

私は確認しました:android_idこの方法で取得された方法は、Google-Appsがインストールされていないデバイスで正常に機能します(NOGAPPSプロジェクトによって提供されるBlankStoreで使用されます)。


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そのシェル内で別のコマンドを実行しました。これは引用符をエスケープすることなく正常に機能します。あなたの答えはメインマシンで単一のコマンドを実行することです。このためには、引用符をエスケープする必要があります。
マーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.