diff options
Diffstat (limited to 'service/java')
-rw-r--r-- | service/java/com/android/server/wifi/WifiStateMachine.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index 0ce8dd4..1c06e71 100644 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -7730,19 +7730,21 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiPno mContext.getSystemService(Context.TELEPHONY_SERVICE); if (tm != null) { int subId = SubscriptionManager.getDefaultSubId(); + int slotId = tm.getDefaultSim(); if (targetWificonfiguration != null && targetWificonfiguration.SIMNum > 0 && tm.getDefault().getPhoneCount() >= 2) { int[] subIds = SubscriptionManager.getSubId(targetWificonfiguration.SIMNum - 1); if (subIds != null) { subId = subIds[0]; + slotId = SubscriptionManager.getSlotId(subId); } } String imsi = tm.getSubscriberId(subId); String mccMnc = ""; - if (tm.getSimState(subId) == TelephonyManager.SIM_STATE_READY) + if (tm.getSimState(slotId) == TelephonyManager.SIM_STATE_READY) mccMnc = tm.getSimOperator(subId); String identity = buildIdentity(eapMethod, imsi, mccMnc); @@ -8413,9 +8415,17 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiPno if (mnc.length() == 2) mnc = "0" + mnc; } else { - // extract mcc & mnc from IMSI, assume mnc size is 3 + // extract mcc & mnc from IMSI, assume mnc size is 3 if in this list, 2 otherwise + String ThreeDigitMnc[] = {"302", "310", "311", "312", "313", "314", "315", "316", "334", "348"}; + mcc = imsi.substring(0, 3); mnc = imsi.substring(3, 6); + + if (!Arrays.asList(ThreeDigitMnc).contains(mcc)) + mnc = mnc.substring(0, 2); + + if (mnc.length() == 2) + mnc = "0" + mnc; } return prefix + imsi + "@wlan.mnc" + mnc + ".mcc" + mcc + ".3gppnetwork.org"; |