web-dev-qa-db-ja.com

デバイスのIMEI / MEIDを取得するために使用できるAndroid Shellまたはadbコマンドはありますか?

デバイスのIMEIまたはMEID番号を返すadbまたはAndroid Shellコマンドを実行できますか?できればそれだけが返されます。

29
someoneHuman

これを行う方法を見つけました。 adb Shell dumpsys iphonesubinfoをシェルで実行する必要があります。必要以上の情報が得られますが、IMEIまたはMEID番号も返されます。

編集(2017):Android 5.0+では、service callコマンドを使用する必要があります。これに関する詳細情報は here にあります。

50
someoneHuman

ESNでできること

サービスコールiphonesubinfo 16

少なくとも、Motorola Photon Qで正しいものが得られます。

クリーンアップするには(デバイスにシェルがあり、そこに有能なビジーボックスがあると仮定します。そうでない場合は、強くお勧めします):

    service call iphonesubinfo 16 | busybox awk -F "'" '{print $2}' | busybox sed 's/[^0-9A-F]*//g' | busybox tr -d '\n' && echo

クリーンアップを伴うMEIDの場合:

service call iphonesubinfo 1 | busybox awk -F "'" '{print $2}' | busybox sed 's/[^0-9A-F]*//g' | busybox tr -d '\n' && echo
4
Sasha Pachev

IMEIの場合:

adb Shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=
3
Joolah

これは私のネクサス5とモト5Gで動作します。

output:

[build.id]: [M4B30X]
[build.version.release]: [6.0.1]
[build.version.sdk]: [23]
[build.version.security_patch]: [2016-10-05]
[product.brand]: [google]
[product.manufacturer]: [LGE]
[product.model]: [Nexus 5]
[product.name]: [hammerhead]
[serialno]: [05xxxxxxxxxxx4]
[device.imei]: [xxxxxxxxxxxx]
[device.phonenumber]: [+xxxxxxxxxx]

スクリプトget.deviceinfo.bash

#!/bin/bash
# Get the device properties
adb Shell getprop | grep "model\|version.sdk\|manufacturer\|ro.serialno\|product.name\|brand\|version.release\|build.id\|security_patch" | sed 's/ro\.//g'
# get the device ime
echo "[device.imei]: [$(adb Shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d'| tr -d '\n' | tr -d '.' | tr -d ' ')]"
# get the device phone number
echo "[device.phonenumber]: [$(adb Shell service call iphonesubinfo 19 | awk -F "'" '{print $2}' | sed '1 d'| tr -d '\n' | tr -d '.' | tr -d ' ')]"

以下が必要です。

2
angelous

iphonesubinfo 1コマンドは多くのデバイスでは機能しません。ほとんどのAndroidバージョンおよびルート化されたデバイスとルート化されていないデバイスで一貫して動作するはずです。

IMEIを知りた​​いデバイスにインストールできる独自のアプリが既にある場合は、このBroadcastReceiverをアプリに追加します。

public class GetImeiReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
        setResultData(imei);
    }

}

およびAndroidManifest.xml

<receiver Android:name=".GetImeiReceiver">
  <intent-filter>
    <action Android:name="com.myapp.GET_IMEI"/>
  </intent-filter>
</receiver>

ADB経由で受信者を呼び出します。

adb Shell am broadcast -a com.myapp.GET_IMEI

...そして出力は次のようになります:

Broadcast completed: result=0, data="000000000000000"

...ここで、dataはデバイスIMEIです。

このソリューションを統合する既存のアプリがない場合は、必要なコードを含むこのシンプルなアプリを作成しました: https://github.com/saschoar/Android-imei-getter ( APKと完全な手順も含まれます)。

2
saschoar

IMEI- adbシェルサービスコールiphonesubinfo 1 | awk -F "'"' {print $ 2} '| sed '1 d' | sed 's /.// g' | awk '{print}' ORS = ''

Android ID =

adbシェル設定は安全なAndroid_idを取得します

0
mitesh