【发布时间】:2013-10-05 17:43:33
【问题描述】:
有没有办法通过 adb 获取手机的电话号码?
我认为 dumpsys 是一个可能的答案,但似乎没有任何系统服务跟踪手机自己的号码。
【问题讨论】:
有没有办法通过 adb 获取手机的电话号码?
我认为 dumpsys 是一个可能的答案,但似乎没有任何系统服务跟踪手机自己的号码。
【问题讨论】:
iphonesubinfo 服务“跟踪”包括电话号码在内的订户信息。不幸的是,iphonesubinfo 服务没有实现 dump() 方法,所以 dumpsys 什么也没显示。您将不得不使用service call 命令来调用IPhoneSubInfo.getLine1Number() 或IPhoneSubInfo.getMsisdn()
根据 android 版本和您的运营商,以下一两个命令会告诉您电话号码(service call 命令需要 root 权限):
service call iphonesubinfo 4
service call iphonesubinfo 5
service call iphonesubinfo 6
service call iphonesubinfo 7
service call iphonesubinfo 8
如果您想为您的特定设备找出正确的代码 - 从 Calling Android services from ADB shell 帖子下载脚本并像这样运行它:
./get_android_service_call_numbers.sh iphonesubinfo | grep getLine1Number
更新
Android 5.0 的交易代码:
service call iphonesubinfo 11 # getLine1Number()
service call iphonesubinfo 15 # getMsisdn()
Android 5.1 的交易代码:
service call iphonesubinfo 13 # getLine1Number()
service call iphonesubinfo 17 # getMsisdn()
【讨论】:
iphonesubinfo 确实实现了 dump() 方法。但是,它只报告电话类型(例如 GSM)和设备 ID(例如 IMEI),而不是电话号码。如果您对其中之一感兴趣,会有所帮助,否则,请继续使用上述内容。
iphonesubinfo服务事务:4 = getGroupIdLevel1, 5 = getIccSerialNumber, 6 = getLine1Number, 7 = getLine1AlphaTag, 8 = getMsisdn.
iRequires READ_PHONE_STATE: N either user 2000 nor current process has android permissionREAD_PHONE_STATE。我打开了 USB 调试。