Android 13下如何使用ADB命令获取IMEI?原方法报错求解
Android 13及以上版本ADB获取IMEI的解决办法
之前用于Android 12的ADB命令:
adb root adb shell "service call iphonesubinfo 1 i64 0 | cut -c 52-66 | tr -d '.[:space:]'"
在Android 13及以上版本会返回"Package does not belong to..."错误,这是因为系统收紧了iphonesubinfo服务的调用权限,非合规调用会被拦截。以下是可行的解决办法:
已Root设备(推荐方案)
方式一:通过dumpsys提取IMEI
dumpsys iphonesubinfo会输出设备电信相关信息,直接过滤提取IMEI:
adb root adb shell "dumpsys iphonesubinfo | grep 'IMEI' | awk '{print $2}'"
若输出格式存在差异,可用正则匹配15位IMEI:
adb root adb shell "dumpsys iphonesubinfo | grep -o '[0-9]\{15\}'"
方式二:使用官方cmd phone命令
Android 13+提供了官方命令获取IMEI,Root权限下执行:
adb root adb shell "cmd phone get-imei"
双卡设备获取第二张卡IMEI,指定slot参数:
adb root adb shell "cmd phone get-imei 1"
未Root设备(需USB调试权限)
若设备未Root但开启了USB调试,可通过内容提供者查询:
adb shell content query --uri content://telephony/siminfo --projection imei | grep -o 'imei=[0-9]*' | cut -d= -f2
注:该方法在部分定制ROM上可能因厂商权限限制失效。
失效原因说明
Android 13开始,iphonesubinfo服务新增了包名校验逻辑,原命令的调用方式未通过权限校验,因此触发"Package does not belong to..."错误。
内容的提问来源于stack exchange,提问作者James Feng
相关产品推荐
相关产品推荐

