是否有一些我可以运行的adb或android shell命令会返回设备的IMEI或MEID号码?最好是返回所有内容。
答案 0 :(得分:51)
我想出了如何做到这一点。您需要在shell中运行adb shell dumpsys iphonesubinfo
。它会给你一些比你需要的更多,但它也会返回IMEI或MEID号码。
编辑(2017):在Android 5.0+中,您需要使用service call
命令。有关详细信息,请访问here。
答案 1 :(得分:4)
以下ADB命令对我有用,以获得IMEI:
adb shell "service call iphonesubinfo 1 | cut -c 52-66 | tr -d '.[:space:]'"
答案 2 :(得分:3)
对于ESN,您可以
服务电话iphonesubinfo 16
至少它给了我一个关于摩托罗拉Photon Q的正确的。
要清理它(假设你在设备上有shell并且有一个有能力的busybox,如果不是我强烈推荐一个):
service call iphonesubinfo 1 | busybox awk -F "'" '{print $2}' | busybox sed 's/[^0-9A-F]*//g' | busybox tr -d '\n' && echo
对于带清理的MEID:
<a href="url/RollBearing.html" id="various2">
<img class="rollingbearingdefects" src="img/hotspot.png"
onmouseover="this.src='img/RollingBearingDefects2.png';"
onmouseout="this.src='img/hotspot.png';" /></a>
答案 3 :(得分:2)
由于iphonesubinfo 1
命令在许多设备上不起作用,因此这里有一些解决方法可以在大多数Android版本以及root和无根设备上保持一致:
如果您已经有自己的应用程序可以安装在想要了解IMEI的设备上,请将此BroadcastReceiver
添加到您的应用中:
public class GetImeiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
setResultData(imei);
}
}
和AndroidManifest.xml
:
<receiver android:name=".GetImeiReceiver">
<intent-filter>
<action android:name="com.myapp.GET_IMEI"/>
</intent-filter>
</receiver>
通过亚行呼叫您的接收方:
adb shell am broadcast -a com.myapp.GET_IMEI
...输出结果如下:
Broadcast completed: result=0, data="000000000000000"
...其中data
是设备IMEI。
如果您没有现成的应用程序来集成此解决方案,我创建了这个简单的应用程序,其中包含所需的代码: https://github.com/saschoar/android-imei-getter(还包括APK和完整说明)。
答案 4 :(得分:1)
这适用于我的nexus 5和moto 5G。
<强>输出:
[build.id]: [M4B30X]
[build.version.release]: [6.0.1]
[build.version.sdk]: [23]
[build.version.security_patch]: [2016-10-05]
[product.brand]: [google]
[product.manufacturer]: [LGE]
[product.model]: [Nexus 5]
[product.name]: [hammerhead]
[serialno]: [05xxxxxxxxxxx4]
[device.imei]: [xxxxxxxxxxxx]
[device.phonenumber]: [+xxxxxxxxxx]
脚本:get.deviceinfo.bash
#!/bin/bash
# Get the device properties
adb shell getprop | grep "model\|version.sdk\|manufacturer\|ro.serialno\|product.name\|brand\|version.release\|build.id\|security_patch" | sed 's/ro\.//g'
# get the device ime
echo "[device.imei]: [$(adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d'| tr -d '\n' | tr -d '.' | tr -d ' ')]"
# get the device phone number
echo "[device.phonenumber]: [$(adb shell service call iphonesubinfo 19 | awk -F "'" '{print $2}' | sed '1 d'| tr -d '\n' | tr -d '.' | tr -d ' ')]"
需要:
adb
(Android SDK Platform Tools)答案 5 :(得分:1)
对于IMEI,您可以使用:
adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=
答案 6 :(得分:0)
IMEI- adb shell服务调用iphonesubinfo 1 | awk -F&#34;&#39;&#34; &#39; {print $ 2}&#39; | sed&#39; 1 d&#39; | sed's /.// g&#39; | awk&#39; {print}&#39; ORS =&#39;&#39;
Android ID =
adb shell设置获得安全android_id
答案 7 :(得分:0)
对于IMEI,也许此命令更容易理解
db -s <device id> shell service call iphonesubinfo 1 | cut -c 52-66 | tr -d '.[:space:]'
db -s <device id> shell service call iphonesubinfo 1
获得完整结果Result: Parcel(
0x00000000: 00000000 0000000f 00350033 00340037 '........3.5.7.4.'
0x00000010: 00350032 00370030 00310032 00390039 '2.5.0.7.2.1.9.9.'
0x00000020: 00370034 00000032 '4.7.2... ')
cut -c 52-66
使用上述示例修剪掉52-66以外的所有列........3.5.7.4
2.5.0.7.2.1.9.9
4.7.2...
tr -d '.[:space:]'
修剪掉所有的'。'和空白,使用上面的示例357425072199472
警告 这种方法的缺点是它很脆弱,从某种意义上说,输出必须始终采用相同的格式,并具有完全相同的列。我已经在CentO和OS X上对其进行了验证,但是对adb版本的更新可能仅通过调整输出中的空格即可破坏此命令。
答案 8 :(得分:-18)
只需运行./adb devices
,它就会列出所有连接的IMEI。