Есть ли какая-нибудь команда оболочки adb или android, которую я мог бы запустить, которая вернет номер IMEI устройства или MEID? Предпочтительно, чтобы все, что было бы возвращено.
Есть ли команда orroid shell или adb, которую я мог бы использовать для получения устройства IMEI/MEID?
Ответ 1
Я понял, как это сделать. Вам нужно запустить adb shell dumpsys iphonesubinfo
в оболочке. Это даст вам немного больше, чем вам нужно, но оно также вернет номер IMEI или MEID.
Изменить (2017): в Android 5.0+ вам понадобится команда service call
. Более подробную информацию об этом можно найти здесь.
Ответ 2
Для 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
Ответ 3
Поскольку команда 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 и полные инструкции).
Ответ 4
Это работает для меня на моей связи 5 и moto 5G.
выход:
[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]
Script: 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 ' ')]"
Для этого требуется:
- Отладка UBS ON (параметры разработчика)
-
adb
(Инструменты Android SDK для платформы)
Ответ 5
IMEI- вызов службы оболочки adb iphonesubinfo 1 | awk -F "'" ' {print $2} '| sed '1 d' | sed 's/.//g' | awk '{print}' ORS = ''
Android ID =
Настройки оболочки adb получают безопасный файл android_id
Ответ 6
Для IMEI вы можете использовать:
adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=
Ответ 7
Просто запустите ./adb devices
и в нем перечислены все подключенные IMEI.