自Android 5.0 Lollipop以来,adb shell dumpsys iphoneubinfo无法运行

时间:2014-11-18 19:44:25

标签: android adb android-5.0-lollipop

我们以前使用以下命令获取设备ID / IMEI:

adb shell dumpsys iphonesubinfo

但是自上次Android更新(5.0 - Lollilop)以来,此命令没有返回任何内容,我在Nexus 4和Nexus 5上都执行了此测试。

我知道我可以从代码中获取IMEI,这仍然有效,但有没有人有针对ADB的解决方法?

4 个答案:

答案 0 :(得分:9)

IMEI for sim 1

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

答案 1 :(得分:7)

您始终可以使用service call命令来调用服务方法。

以下是iphonesubinfoandroid-5.0.0_r1服务的交易代码:

 1  getDeviceId
 2  getDeviceIdForSubscriber
 3  getImeiForSubscriber
 4  getDeviceSvn
 5  getSubscriberId
 6  getSubscriberIdForSubscriber
 7  getGroupIdLevel1
 8  getGroupIdLevel1ForSubscriber
 9  getIccSerialNumber
10  getIccSerialNumberForSubscriber
11  getLine1Number
12  getLine1NumberForSubscriber
13  getLine1AlphaTag
14  getLine1AlphaTagForSubscriber
15  getMsisdn
16  getMsisdnForSubscriber
17  getVoiceMailNumber
18  getVoiceMailNumberForSubscriber
19  getCompleteVoiceMailNumber
20  getCompleteVoiceMailNumberForSubscriber
21  getVoiceMailAlphaTag
22  getVoiceMailAlphaTagForSubscriber
23  getIsimImpi
24  getIsimDomain
25  getIsimImpu
26  getIsimIst
27  getIsimPcscf
28  getIsimChallengeResponse
29  getIccSimChallengeResponse

大多数方法都需要root。但幸运的是getDeviceId(获得设备&IMEI / MEID所需的那个)没有。

对于正确解析设备端的service call命令输出而没有外部依赖关系,请参阅我的answer here

另请阅读Calling Android services from ADB shell了解详情。

答案 2 :(得分:2)

我同意alex P和jeremy我们可以通过服务电话获得电话IMEI但是这会导致很复杂的数据包看起来很复杂,因为我不是程序员我已经找到解决方案来单独获取IMEI并决定分享它,因为它可以帮助许多人。  所以这里是我从lollypop 5.1获取IMEI的脚本,它适用于非root电话

@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

它将导致“手机IMEI”无论手机IMEI是什么'“ *请记住,它只显示默认设置为调用的sim端口的imei。 如果有人可以缩短这个脚本,那就太棒了。

答案 3 :(得分:1)

ADB命令获取设备IMEI:

adb shell "service call iphonesubinfo 1 | cut -c 52-66 | tr -d '.[:space:]'"

ADB命令获取设备电话号码:

adb shell "service call iphonesubinfo 18 | cut -c 52-66 | tr -d '.[:space:]+'"

ADB命令获取Android ID:

adb shell settings get secure android_id

ADB命令获取设备序列号:

adb shell getprop ro.serialno

注意:以上任何命令都不需要root