Estoy trabajando con ADB en mi dispositivo Samsung Galaxy. Quiero obtener el número IMEI del dispositivo usando ADB, pero no he podido hacerlo.
Intenté lo siguiente:
adb shell dumpsys iphonesubinfo
pero no devuelve nada.
También probé con el comando de llamada de servicio:
adb shell service call iphonesubinfo
pero me da un resultado extraño como este:
Result: Parcel(
0x00000000: 00000000 0000000f 00350033 00390038 '........3.5.8.9.'
0x00000010: 00320037 00380030 00350034 00350031 '7.2.0.8.4.5.1.5.'
0x00000020: 00300031 00000033 '1.0.3... ')
Puede alguien ayudarme con esto?
Intenta poner este código en un archivo .bat y ejecútalo:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=6*" %%a in ('adb shell "service call iphonesubinfo 1 ^| grep -m 1 \"'\""') do (
set imei1=%%a)
for /f "tokens=6*" %%b in ('adb shell "service call iphonesubinfo 1 ^| grep -m 2 \"'\""') do (
set imei2=%%b)
for /f "tokens=4*" %%c in ('adb shell "service call iphonesubinfo 1 ^| grep -m 3 \"'\""') do (
set imei3=%%c)
set imei=!imei1!!imei2!!imei3!
echo !imei! > imei.txt
for /f "delims=" %%d in (imei.txt) do (
set DeviceIMEI=%%d
set DeviceIMEI=!DeviceIMEI:'=!
set DeviceIMEI=!DeviceIMEI:.=!
set OIMEI=Phone IMEI !DeviceIMEI!
)
echo %OIMEI%
pause
Lo obtuve de este hilo de StackOverflow: https://stackoverflow.com/a/34362809/8173870
Dada la etiqueta 7.0-nougat , asumo que tiene o está apuntando a Android Nougat. Android Nougat viene con toybox que actúa como una alternativa a busybox y tiene algunas utilidades útiles. Me las arreglé para usar esas herramientas para imprimir IMEI así:
adb shell
service call iphonesubinfo 1 | toybox cut -d "'" -f2 | toybox grep -Eo '[0-9]' | toybox xargs | toybox sed 's/\ //g'
Dado que no obtendría un shell interactivo al usar un script o una aplicación, puede pasar los comandos de esta manera:
adb shell "service call iphonesubinfo 1 | toybox cut -d \"'\" -f2 | toybox grep -Eo '[0-9]' | toybox xargs | toybox sed 's/\ //g'"
El siguiente comando ADB funciona en mi PC con Windows para obtener un resultado claro de IMEI:
adb shell "service call iphonesubinfo 4 | cut -c 52-66 | tr -d '.[:space:]'"
iphonesubinfo 1
a iphonesubinfo 4
, que es el código de servicio correcto para obtener el IMEI completo . Así que intente: adb shell "service call iphonesubinfo 4 | cut -c 52-66 | tr -d '.[:space:]'"
, y vea si obtiene también IMEI 2.Usando android-svc :
android-svc --adb call 'iphonesubinfo.getDeviceId();'
devolvería algo como esto:
358972084515103
Puede que no te hayas dado cuenta, pero en realidad has publicado la respuesta a tu propia pregunta:
Result: Parcel(
0x00000000: 00000000 0000000f 00350033 00390038 '........3.5.8.9.'
0x00000010: 00320037 00380030 00350034 00350031 '7.2.0.8.4.5.1.5.'
0x00000020: 00300031 00000033 '1.0.3... ')
Específicamente, la porción a la derecha:
'........3.5.8.9.'
'7.2.0.8.4.5.1.5.'
'1.0.3... '
Simplemente póngalo todo en una línea y elimine las comillas simples y se convierte en:
........3.5.8.9.7.2.0.8.4.5.1.5.1.0.3...
Ahora quita los puntos y obtienes:
358972084515103
(también conocido como su número IMEI)
input keyevent KEYCODE_CALL;
sleep 1;
input text '*#06#';
uiautomator dump --compressed /dev/stdout\
|tr ' ' '\n'\
|awk -F'"' '{print $2}'|grep "^[0-9]\{15\}$" \
|nl -w 1 -s':'\
|sed 's/^/IMEI/g'
IMEI1:xxxxxxxxxxxxx
IMEI2:xxxxxxxxxxxxx
adb shell dumpsys iphonesubinfo
funciona solo para teléfonos por debajo de Android 5 Lolipop.
Debido a que Android Nougat tiene más de 5.0, necesita:adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=
scoop
. O debe crear una herramienta de Windows que analice el resultado de la línea de comandos sin esas herramientas.
esQmo_
yash
Irfan Latif