是否有 android shell 或 adb 命令可以用来获取设备的 IMEI/MEID?
我可以运行一些 adb 或 android shell 命令来返回设备的 IMEI 或 MEID 号码吗?最好这就是返回的全部内容。
Is there some adb or android shell command that I could run that would return a device's IMEI or MEID number? Preferably that's all that would be returned.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
我想出了如何做到这一点。您需要在 shell 中运行
adb shell dumpsys iphonesubinfo
。它会给你比你需要的多一点的信息,但它也会返回 IMEI 或 MEID 号码。编辑(2017):在 Android 5.0+ 中,您需要使用
service call
命令。有关详细信息,请参阅 这里。I figured out how to do this. You need to run
adb shell dumpsys iphonesubinfo
in a shell. It will give you a bit more than you need, but it will also return IMEI or MEID number.Edit (2017): In Android 5.0+ you'll need to use the
service call
command. More info about that can be found here.对于 IMEI,您可以使用:
For IMEI you can use:
以下 ADB 命令可帮助我获取 IMEI:
adb shell "service call iphonesubinfo 1 | cut -c 52-66 | tr -d '.[:space:]'"
The following ADB command works for me to get the IMEI:
adb shell "service call iphonesubinfo 1 | cut -c 52-66 | tr -d '.[:space:]'"
对于 ESN,您可以
拨打 iphonesubinfo 16 进行服务,
至少它会在 Motorola Photon Q 上为我提供正确的信息。
要清理它(假设您的设备上有 shell,并且那里有一个功能强大的 busybox,如果没有,我强烈推荐一个)
:带清理的 MEID:
For ESN you can do
service call iphonesubinfo 16
at least it gives me the right one on Motorola Photon Q.
To clean it up (assuming you have shell on the device and have a capable busybox there, if not I highly recommend one):
For MEID with cleanup:
这适用于我的 Nexus 5 和 moto 5G。
输出:
脚本:
get.deviceinfo.bash
它需要:
adb
(< a href="https://developer.android.com/studio/releases/platform-tools.html#download" rel="nofollow noreferrer">Android SDK 平台工具)This works for me on my nexus 5 and moto 5G.
output:
Script:
get.deviceinfo.bash
It requires:
adb
(Android SDK Platform Tools)对于IMEI,也许这个命令更容易理解
db -sshell 服务调用 iphonesubinfo 1
获取完整结果,例如cut -c 52-66
使用上面的示例tr -d ' 修剪除 52-66 之外的所有列.[:space:]'
修剪掉任何 '.'和空格,使用上面的示例警告
这种方法的缺点是它很脆弱,因为输出必须始终采用相同的格式,具有完全相同的列。我在 CentOs 和 OS X 上验证了它,但 adb 版本的更新可能会通过调整输出中的空格来破坏此命令。
For the IMEI, maybe this command is easier to understand
db -s <device id> shell service call iphonesubinfo 1
gets the full result, for examplecut -c 52-66
trims away all columns except 52-66, using the above exampletr -d '.[:space:]'
trims off any '.' and white space, using the example aboveWarning
A downside of this approach is that it is brittle, in the sense that the output must always be in the same format, having the exact same columns. I verified it on CentOs and OS X, but an update to the adb version could break this command simply by adjusting the whitespace in the output.
IMEI-
adb shell 服务调用 iphonesubinfo 1 | awk -F "'" '{print $2}' | awk -F "'" '{print $2}' | sed '1 d'| sed 's/.//g' | sed 's/.//g' | awk '{print}' ORS=''
Android ID=
adb shell 设置获取安全 android_id
IMEI-
adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d'| sed 's/.//g' | awk '{print}' ORS=''
Android ID=
adb shell settings get secure android_id
由于
iphonesubinfo 1
命令在许多设备上不起作用,这里有一个小解决方法,应该可以在大多数 Android 版本以及已 root 和未 root 的设备上一致工作:如果您已经有一个自己的应用程序,可以安装在您想要了解 IMEI 的设备上,将此
BroadcastReceiver
添加到您的应用:以及
AndroidManifest.xml
:通过 ADB 调用您的接收器:
...并且输出将会是一些东西例如:
...其中
data
是设备 IMEI。如果您没有现有的应用程序来集成此解决方案,我创建了这个简单的应用程序,其中包含所需的代码:
https://github.com/saschoar/android-imei-getter(还包括APK 和完整说明)。
As the
iphonesubinfo 1
command does not work on many devices, here is a little workaround that should work consistently on most Android versions and on rooted and unrooted devices:If you already have an own app that you can install on the device that you want to know the IMEI from, add this
BroadcastReceiver
to your app:and to the
AndroidManifest.xml
:Call your receiver over ADB:
...and the output will be something like:
...where
data
is the device IMEI.If you have don't have an existing app to integrate this solution into, I created this simple one which includes the required code:
https://github.com/saschoar/android-imei-getter (also includes the APK and full instructions).