You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ADB获取Android 4.4.4设备MSISDN并解析返回结果

结果含义说明

你调用adb shell service call iphonesubinfo 8返回全0的Parcel结果,代表本次getMsisdn()接口调用返回空值,没有获取到MSISDN信息,这是Android 4.4版本原生系统的常见情况,主要诱因有两类:

  • adb shell进程未获取READ_PHONE_STATE权限:Android 4.4要求调用MSISDN查询接口必须持有该权限,你可以先执行授权命令再重试查询:
    adb shell pm grant com.android.shell android.permission.READ_PHONE_STATE
  • 运营商SIM卡未写入MSISDN字段:不少运营商不会将用户手机号直接存储在SIM卡的MSISDN对应字段中,这种情况即便有权限也无法通过该接口拿到数据,属于运营商侧的配置限制。

非空Parcel结果解析方法

如果授权后拿到非空的Parcel返回值,可通过两种方式解析:

  1. 手动解析:Parcel中存储的是小端序排列的UTF-16编码字符,每2个十六进制字节对应一个字符,你可以将返回的十六进制串按每4位拆分、倒转字节顺序后,转换为对应的Unicode字符即可得到可读的MSISDN。
  2. 一键解析:直接执行如下组合命令即可自动解析输出可读结果:
adb shell service call iphonesubinfo 8 | grep -o "0x[0-9a-f]*" | awk '{if (NR!=1) print substr($1,3)}' | tr -d '\n' | sed 's/00000000//g' | sed 's/../&\n/g' | grep -v "^00$" | sort -k 1.6,1.7 -k 1.4,1.5 -k 1.2,1.3 -k 1 | tr -d '\n' | xxd -r -p

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:27:03