我正在更新一些代碼以使用在5.1中添加到Android的Multi SIM support。我們在應用程序中檢查了SIM運營商(或MCC + MNC組合),因此我正在編寫的代碼涉及從依賴TelephonyManager.getSimOperator()從SubscriptionManager中獲取SubscriptionInfos,其中每個都可以訪問MCC和MNC的SIM卡。SubscriptionInfo.getMnc()丟棄前導零,無法將MCC + MNC鏈接到SIM運營商
//old way – can only access one SIM
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String simOperator = telephonyManager.getSimOperator();
//new way - gives access to all SIMs
SubscriptionManager subscriptionManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> subInfoList = subscriptionManager.getActiveSubscriptionInfoList();
for(SubscriptionInfo info : subInfoList) {
int mcc = info.getMcc();
int mnc = info.getMnc();
//do some stuff...
}
我發現,因爲它返回的MCC和MNC整數,你失去了領先的零點,在一些跨國公司。要查看一些示例,請查看錶here。當您連接MCC + MNC時,您將獲得SIM卡操作員,因此保留經常出現的零點很重要。例如,墨西哥的NEXTEL的SIM運算符值爲「334090」,但因爲SubscriptionInfo返回MCC和MNC的整數,所以分別得到值334和90。
鑑於此問題,如何將SubscriptionInfo的MCC + MNC對可靠地鏈接到已知SIM運營商列表中的特定SIM運營商?這是這個API的設計中的一個疏忽嗎?是否有其他方法可以爲多SIM手機中的每張SIM卡獲取SIM卡操作員?