如何使用命令行在android中获取imsi数字

时间:2013-02-11 14:18:08

标签: android shell android-intent adb

我希望使用命令行获取IMSIAndroid手机的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代码吗?这也将解决我的问题。

5 个答案:

答案 0 :(得分:5)

通过TelephonyManager.getSubscriberId()运行来调用Android版本5.x-7.x中的adb shell

adb shell service call iphonesubinfo 7

此命令不再(即在大多数6.0+设备上)要求设备被植根。

对于正确解析设备端的service call命令输出而没有外部依赖关系,请参阅我的answer here

另请阅读Calling Android services from ADB shell了解详情。

答案 1 :(得分:2)

adb shell getprop ril.iccid.sim1

如果您想知道所有数据,您只能使用adb shell getprop,这会向您显示所有数据,并且您会看到某些项目向您显示IMSI类似商品ril.iccid.sim1persist.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