【问题标题】:how to get imsi number in android using command line如何使用命令行在android中获取imsi编号
【发布时间】:2013-02-11 14:18:08
【问题描述】:

我想使用命令行获取Android 手机的IMSI SIM 号码。

android中是否有任何adb命令或任何shell命令?

我在三星 Galaxy ace 中尝试了adb shell getprop ril.IMSI 命令,它有效。它给了我IMSI 号码。但我在三星 Galaxy S3 中尝试了相同的命令。它不返回任何东西。

我想仅使用命令行获取Samsung Galaxy S3 中的IMSI SIM 卡号码。 (不是 Android 应用程序代码)在 Android 中使用 adb 命令或一些 shell 命令。

另外,我知道JAVA 中有一个简单的代码可以在 Android 应用程序中运行,它给出了IMSI 编号:

TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imsi = mTelephonyMgr.getSubscriberId();

我可以从命令行以某种方式运行这个Android Java 代码吗?这也将解决我的问题。

【问题讨论】:

    标签: android shell android-intent adb


    【解决方案1】:

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

    adb shell service call iphonesubinfo 7
    

    此命令不再(即在大多数 6.0+ 设备上)要求设备获得 root 权限。

    对于正确在设备端解析service call命令输出并且没有外部依赖请看我的answer here

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

    【讨论】:

    • 我的手机没有root。我检查了上面的命令。但是没有用。它给出了一个很大的错误:“..Requires READ_PHONE_STATE:用户 2000 和当前进程都没有 android.permission .READ_PHONE_STATE”
    【解决方案2】:
    adb shell getprop ril.iccid.sim1
    

    如果您想知道所有数据,您只能使用 adb shell getprop,它会显示所有数据,并且您会看到某些项目向您显示 IMSI,例如项目 ril.iccid.sim1persist.radio.cfu.iccid.0

    【讨论】:

    • @AmitaiFensterheim,虽然属性管理器可能是 Android 中的标准,但访问它肯定不是。在我的三星 S6 上,getprop 是指向toolbox 的符号链接。供应商之间可能会有所不同,更不用说设备了。供应商也可以选择以不同的方式命名他们的属性,或者完全限制用户空间的访问。
    【解决方案3】:

    您可以使用下面的代码通过 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 命令从属性管理器获取值。

    【讨论】:

      【解决方案4】:
      adb shell getprop persist.radio.ddssim.iccid
      

      这适用于我的 Oneplus 设备。就像提到的@j140781,尝试adb shell getprop 获取所有数据,然后尝试查找以persist.radio.ril.iccid. 开头的项目

      【讨论】:

        【解决方案5】:

        以下内容适用于我在植根的 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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-09-29
          • 2015-12-14
          • 2021-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-10
          相关资源
          最近更新 更多