SubscriptionInfo.getMnc()为具有不同运营商的两个SIM返回相同的值

Bui*_*d3r 14 android android-source telephonymanager dual-sim android-5.1.1-lollipop

我试图在具有双Sim(两者都有效)的Android 5.1设备中获取MCC和MNC号码(基本上我想要IMSI号码但这些也足够了).由于5.1支持双Sim,所以我使用了这样的Subscription管理器:

SubscriptionManager manager = SubscriptionManager.from(this);
List<SubscriptionInfo> sil = manager.getActiveSubscriptionInfoList();
    if (sil != null) {
        for (SubscriptionInfo subInfo : sil) {
            Log.v("TestMain", "SubInfo:" + subInfo);
        }
    } else {
        Log.v("TestMain", "SubInfo: list is null");
    }
Run Code Online (Sandbox Code Playgroud)

得到了这个输出:

07-24 18:28:32.162    3844-3844/? V/TestMain? SubInfo:{id=1, mcc 405 mnc 803, iccId=89918030914128062059 simSlotIndex=0 displayName=Aircel Karnataka carrierName=Aircel — Aircel Karnataka nameSource=0}
07-24 18:28:32.162    3844-3844/? V/TestMain? SubInfo:{id=2,  mcc 405 mnc 803, iccId=8991860044481968955 simSlotIndex=1 displayName=CARD 2 carrierName=Vodafone Karnataka nameSource=0}
Run Code Online (Sandbox Code Playgroud)

MCC(将与同一个国家/地区相同)注意到虽然运营商不同,但MNC是相同的.

当我关掉手机时,我在logcat中看到了这一行:

07-24 18:31:02.295      616-616/? V/KeyguardUpdateMonitor? SubInfo:{id=1,  mcc 405 mnc 803, iccId=89918030914128062059 simSlotIndex=0 displayName=CARD 1 carrierName=Emergency calls only — Aircel Karnataka nameSource=0}
07-24 18:31:02.295      616-616/? V/KeyguardUpdateMonitor? SubInfo:{id=2,  mcc 404 mnc 86, iccId=8991860044481968955 simSlotIndex=1 displayName=CARD 2 carrierName=Emergency calls only — Vodafone Karnataka nameSource=0}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,密钥保护应用程序使得MNC适用于两种模拟.

所以我探索的键盘保护应用程序的代码,发现该代码是相同的,因为我是使用代码来自Android的取源在这里:

protected void handleSimSubscriptionInfoChanged() {
        if (DEBUG_SIM_STATES) {
            Log.v(TAG, "onSubscriptionInfoChanged()");
            List<SubscriptionInfo> sil = mSubscriptionManager.getActiveSubscriptionInfoList();
            if (sil != null) {
                for (SubscriptionInfo subInfo : sil) {
                    Log.v(TAG, "SubInfo:" + subInfo);
                }
            } else {
                Log.v(TAG, "onSubscriptionInfoChanged: list is null");
            }
        }
Run Code Online (Sandbox Code Playgroud)

我进行了更多探索,发现即使是关键保护应用程序只有在手机关机时才能使MCC正常运行,有时甚至可以为两个SIM卡获得相同的MNC.但是运营商名称始终是不同的.

这是Android 5.1中的错误还是我做错了什么?

Bui*_*d3r 0

这是android 5.1的一个bug,我更新手机后修复了