我想使用命令行获取Android
手机的IMSI
SIM号码。
安卓系统中有没有adb命令或shell命令???
我在三星Galaxy王牌中尝试了adb shell getprop ril.IMSI
命令,它有效。它给了我IMSI
号。但我在三星Galaxy S3中尝试了同样的命令。它什么也不回。
我只想使用命令行在Samsung Galaxy S3
中获取SIM卡的IMSI
号码。(不是Android应用程序代码)使用adb
命令或Android
中的某个shell命令。
此外,我知道JAVA
中有一个简单的代码可以在Android应用程序中运行,它给出了IMSI
的编号:
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imsi = mTelephonyMgr.getSubscriberId();
我可以从命令行运行这个Android Java
代码吗?这也将解决我的问题。
在Android 5.x-7.x版本中通过adb shell
调用TelephonyManager.getSubscriberId()
运行:
adb shell service call iphonesubinfo 7
此命令不再(即在大多数6.0+设备上)需要设备根目录。
对于设备端service call
命令输出的正确解析,并且没有外部依赖性,请参阅此处的答案
另请阅读从ADB外壳调用Android服务以了解更多详细信息。
adb shell getprop ril.iccid.sim1
如果你想知道所有数据,你只能使用adb shell getprop
,它会显示所有数据,并且你会看到一些项目会显示IMSI,比如项目ril.iccid.sim1
或persist.radio.cfu.iccid.0
您可以使用下面的代码使用java代码中的命令来获取ccid。
public static String getSIMCCIDByCmd() {
try {
Process getSimCCIDProc = Runtime.getRuntime().exec(new String[]{"getprop", "ril.iccid.sim1"});
try (final BufferedReader b = new BufferedReader(new InputStreamReader(getSimCCIDProc.getInputStream()))) {
String ccid = b.readLine();
return ccid;
} catch (final IOException e) {
DadsHelper.LOG(TAG, "Exception while reading inputstream", e);
return null;
}
}
catch (Exception e) {
DadsHelper.LOG(TAG,"Exception in getSIMCCID",e);
return null;
}
}
上面的代码使用:getprop命令从属性管理器中获取值。
adb shell getprop persist.radio.ddssim.iccid
这对我的Oneplus设备有效。如@j140781所述,尝试adb shell getprop
获取所有数据,然后尝试查找以persist.radio.
或ril.iccid.
开头的项目
以下内容适用于我的Android 10 Moto G7 Plus:
adb shell
su
然后一旦你进入根外壳:
service call iphonesubinfo 7 | tail -3 | sed s/')// | awk '{print $NF}' | sed s/['.]//g | tr -d \n