如何在android中使用命令行获取imsi编号



我想使用命令行获取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.sim1persist.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

最新更新