5.1にAndroidに追加されたMulti SIM supportを使用するコードをいくつか更新しています。私たちのアプリでは、SIMオペレータ(またはMCC + MNCコンボ)を多く調べているので、私が書いているコードでは、TelephonyManager.getSimOperator()への依存からSubscriptionManagerからのSubscriptionInfosへの移行に関連しています。 SIMのMCCとMNC。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のためにint型を返すているため、あなたは多国籍企業の一部である先行ゼロを失うことを発見しています。いくつかの例を見るには、テーブルhereをチェックしてください。 MCC + MNCを連結すると、SIMオペレータが表示されるため、しばしば存在する0を維持することが重要です。たとえば、メキシコのNEXTELではSIM演算子の値が「334090」ですが、SubscriptionInfoからMCCとMNCのintが返されるため、値はそれぞれ334と90になります。
SubscriptionInfoのMCC + MNCペアを、既知のSIMオペレータのリスト内の特定のSIMオペレータに確実にリンクするにはどうすればよいですか?これはこのAPIの設計における見落としですか?マルチSIM電話にあるすべてのSIMカードに対してSIMオペレーターを取得する他の方法はありますか?