summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHu Wang <huw@codeaurora.org>2018-02-02 15:18:00 +0800
committerBruno Martins <bgcngm@gmail.com>2019-11-22 08:32:16 +0100
commit41bb6bf830ca15c54dda1c225c7cf139d36a5b59 (patch)
tree8b03b336b161ce8d19da3831da194e485babebb3
parentb12f67b3e28e4aa53b318a599ed21cdbf44f1c3c (diff)
downloadandroid_frameworks_opt_net_wifi-lineage-17.0.tar.gz
android_frameworks_opt_net_wifi-lineage-17.0.tar.bz2
android_frameworks_opt_net_wifi-lineage-17.0.zip
wifi: Not reset country code for Dual SIM if any slot is activelineage-17.0
WifiService accepts country code from mccTable, and if one slot is absent, telephony broadcasts the SIM STATE CHANGED event with absent state, and based which WifiSerive resets the country code. This works for single SIM. But for Dual SIM, if one slot is active and another is absent, telephony broadcasts two SIM STATE CHANGED events. As the latter one is with absent state, WifiService resets the country code. In Dual SIM case, Add check that if any slot is active, WifiService shall not reset country code. Change-Id: Icf41d8f4c93616d64796874c55caa39b590d7718 CRs-fixed: 2181365
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index a4639924b..ad369af2c 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -500,6 +500,39 @@ public class WifiServiceImpl extends BaseWifiService {
mAsyncChannelExternalClientHandler.setWifiLog(log);
}
+ // Return true if it is DUAL SIM and either SIM is active.
+ private boolean checkDualSimActive() {
+ TelephonyManager tm = (TelephonyManager)
+ mContext.getSystemService(Context.TELEPHONY_SERVICE);
+
+ if (tm == null) {
+ Log.i(TAG, "checkDualSimActive() is false, tm == null");
+ return false;
+ }
+
+ int phoneCount = tm.getPhoneCount();
+ if (phoneCount < 2) {
+ Log.i(TAG, "checkDualSimActive() is false, phoneCount="
+ + phoneCount + " slot0State=" + tm.getSimState(0));
+ return false;
+ }
+
+ int slot0State = tm.getSimState(0);
+ int slot1State = tm.getSimState(1);
+ if (slot0State != TelephonyManager.SIM_STATE_READY &&
+ slot1State != TelephonyManager.SIM_STATE_READY) {
+ Log.i(TAG, "checkDualSimActive() is false, slot0State="
+ + slot0State + " slot1State=" + slot1State);
+ return false;
+ }
+
+ Log.i(TAG, "checkDualSimActive() is true, phoneCount="
+ + phoneCount
+ + " slot0State=" + slot0State + " slot1State=" + slot1State);
+
+ return true;
+ }
+
/**
* Check if we are ready to start wifi.
*
@@ -542,6 +575,10 @@ public class WifiServiceImpl extends BaseWifiService {
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE);
if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(state)) {
+ if (checkDualSimActive()) {
+ Log.d(TAG, "Not resetting networks as other SIM may active");
+ return;
+ }
Log.d(TAG, "resetting networks because SIM was removed");
mClientModeImpl.resetSimAuthNetworks(false);
} else if (IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(state)) {