デバイスのIMEIまたはMEID番号を返すadbまたはAndroid Shellコマンドを実行できますか?できればそれだけが返されます。
これを行う方法を見つけました。 adb Shell dumpsys iphonesubinfo
をシェルで実行する必要があります。必要以上の情報が得られますが、IMEIまたはMEID番号も返されます。
編集(2017):Android 5.0+では、service call
コマンドを使用する必要があります。これに関する詳細情報は here にあります。
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
IMEIの場合:
adb Shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=
これは私のネクサス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 ' ')]"
以下が必要です。
adb
( Android SDK Platform Tools )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と完全な手順も含まれます)。
IMEI- adbシェルサービスコールiphonesubinfo 1 | awk -F "'"' {print $ 2} '| sed '1 d' | sed 's /.// g' | awk '{print}' ORS = ''
Android ID =
adbシェル設定は安全なAndroid_idを取得します