我希望使用命令行获取IMSI
个Android
手机的SIM卡。
android中是否有任何adb命令或任何shell命令?
我在三星Galaxy ace中尝试了adb shell getprop ril.IMSI
命令,它可以正常工作。它给了我IMSI
个号码。但我尝试在三星Galaxy S3中使用相同的命令。它没有返回任何东西。
我想仅使用命令行在IMSI
中获取Samsung Galaxy S3
个SIM卡号码。 (不是Android应用程序代码)使用adb
命令或Android
中的一些shell命令。
另外,我知道JAVA
中有一个简单的代码可以在Android应用中运行,它会提供IMSI
个数字:
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imsi = mTelephonyMgr.getSubscriberId();
我可以以某种方式从命令行运行此Android Java
代码吗?这也将解决我的问题。
答案 0 :(得分:5)
通过TelephonyManager.getSubscriberId()
运行来调用Android版本5.x-7.x中的adb shell
:
adb shell service call iphonesubinfo 7
此命令不再(即在大多数6.0+设备上)要求设备被植根。
对于正确解析设备端的service call
命令输出而没有外部依赖关系,请参阅我的answer here
答案 1 :(得分:2)
adb shell getprop ril.iccid.sim1
如果您想知道所有数据,您只能使用adb shell getprop
,这会向您显示所有数据,并且您会看到某些项目向您显示IMSI类似商品ril.iccid.sim1
或persist.radio.cfu.iccid.0
答案 2 :(得分: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命令从属性管理器中获取值。
答案 3 :(得分:0)
adb shell getprop persist.radio.ddssim.iccid
这在我的Oneplus设备上为我工作。就像提到的@ j140781一样,尝试adb shell getprop
获取所有数据,然后尝试查找以persist.radio.
或ril.iccid.
开头的项目
答案 4 :(得分:0)
以下内容对我在根植的 Android 10 Moto G7 Plus 上有用:
adb shell
su
然后一旦你在 root shell 中:
service call iphonesubinfo 7 | tail -3 | sed s/\'\)// | awk '{print $NF}' | sed s/[\'\.]//g | tr -d \\n