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

时间:2015-07-24 13:32:17

标签: android android-source telephonymanager android-5.1.1-lollipop dual-sim

我试图获得具有双Sim(均为活动)的Android 5.1设备中的MCC和MNC编号(基本上我想要IMSI编号但这些也足够了)。由于5.1支持双Sim,所以我使用了这样的Subscription管理器:

In [18]: from itertools import chain

In [25]: B = []

In [26]: B.append(list(list(chain.from_iterable(A))))

In [27]: B
Out[27]: [[1, 2, 3, 4, 5, 6, 7, 8, 15, 16]]

得到了这个输出:

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");
    }

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

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

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}

正如您所看到的那样,密钥保护应用程序可以让MNC适用于SIM卡。

因此,我探索了密钥保护应用程序的代码,发现代码与我使用的代码相同 Android源代码取自here

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}

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

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

2 个答案:

答案 0 :(得分:0)

我在三星J5的Android 5.1中遇到了同样的问题,但它在Moto X Play的Android 6.0中工作。由于 SubscriptionManager 是在Android 5.1中引入的,我想这是Android 5.1中的一个错误,在Android M中已得到纠正。

答案 1 :(得分:0)

这是android 5.1中的错误,在我更新手机后得到修复