如何通过adb获取IMEI?
How to obtain IMEI via adb?
我正在尝试跟踪设备、SIM 卡和通话时间卡以进行测试。我有多个设备插入计算机,自从最近更新到 Android 12 后,我无法获取设备的 IMEI。 IMEI 基本上是设备的 FCC 要求的序列号,可以相对容易地从 UI 获得,但我如何通过 ADB 或在来自多个运营商和 OEM 的多个设备上以某种自动化方法获得它?
在 Android 12 FEB 补丁之前,我会使用 service call iphonesubinfo 1
或 service call iphonesubinfo 4
。但不幸的是,在更新之后我收到了 Result: Parcel(ffffffffc ffffffff 00000000 '................')
而之前我会收到一个包含 IMEI 的包裹以通过脚本进行处理。
有没有办法在 Android 12+ 上获取 IMEI?我试图远离使用应用程序。这是一件简单的事情,来自特权用户 (adb shell)。这似乎是跟踪和物流目的的基本必需品。
此命令可用于获取 IMEI。它的工作原理是按拨号键,然后键入 *#06#
,然后解析屏幕上的文本以找到 IMEI 标签和下一个包含实际 IMEI 的元素。最后,它通过删除 text="
之前和 "
.
之后的所有内容来解析该元素
adb shell "imei=$(input keyevent KEYCODE_CALL;sleep 1;input text '*#06#'; uiautomator dump --compressed /dev/stdout|sed s/\>\<\/\n/g|grep -A1 IMEI|tail -n1|sed -e 's/.*text=\"//' -e 's/\".*//'); echo ${imei}"
要仅获取不带校验和的 16 位 IMEI,请将最后的 echo 语句替换为 echo ${imei:0:16}
我正在尝试跟踪设备、SIM 卡和通话时间卡以进行测试。我有多个设备插入计算机,自从最近更新到 Android 12 后,我无法获取设备的 IMEI。 IMEI 基本上是设备的 FCC 要求的序列号,可以相对容易地从 UI 获得,但我如何通过 ADB 或在来自多个运营商和 OEM 的多个设备上以某种自动化方法获得它?
在 Android 12 FEB 补丁之前,我会使用 service call iphonesubinfo 1
或 service call iphonesubinfo 4
。但不幸的是,在更新之后我收到了 Result: Parcel(ffffffffc ffffffff 00000000 '................')
而之前我会收到一个包含 IMEI 的包裹以通过脚本进行处理。
有没有办法在 Android 12+ 上获取 IMEI?我试图远离使用应用程序。这是一件简单的事情,来自特权用户 (adb shell)。这似乎是跟踪和物流目的的基本必需品。
此命令可用于获取 IMEI。它的工作原理是按拨号键,然后键入 *#06#
,然后解析屏幕上的文本以找到 IMEI 标签和下一个包含实际 IMEI 的元素。最后,它通过删除 text="
之前和 "
.
adb shell "imei=$(input keyevent KEYCODE_CALL;sleep 1;input text '*#06#'; uiautomator dump --compressed /dev/stdout|sed s/\>\<\/\n/g|grep -A1 IMEI|tail -n1|sed -e 's/.*text=\"//' -e 's/\".*//'); echo ${imei}"
要仅获取不带校验和的 16 位 IMEI,请将最后的 echo 语句替换为 echo ${imei:0:16}