Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +15 −4 Original line number Diff line number Diff line Loading @@ -539,6 +539,8 @@ public class ServiceStateTracker extends Handler { /** To identify whether EVENT_SIM_READY is received or not */ private boolean mIsSimReady = false; private String mLastKnownNetworkCountry = ""; @UnsupportedAppUsage private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override Loading @@ -564,6 +566,12 @@ public class ServiceStateTracker extends Handler { } else if (intent.getAction().equals(ACTION_RADIO_OFF)) { mAlarmSwitch = false; powerOffRadioSafely(); } else if (intent.getAction().equals(TelephonyManager.ACTION_NETWORK_COUNTRY_CHANGED)) { String lastKnownNetworkCountry = intent.getStringExtra( TelephonyManager.EXTRA_LAST_KNOWN_NETWORK_COUNTRY); if (!mLastKnownNetworkCountry.equals(lastKnownNetworkCountry)) { updateSpnDisplay(); } } } }; Loading Loading @@ -685,6 +693,9 @@ public class ServiceStateTracker extends Handler { filter = new IntentFilter(); filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED); context.registerReceiver(mIntentReceiver, filter); filter = new IntentFilter(); filter.addAction(TelephonyManager.ACTION_NETWORK_COUNTRY_CHANGED); context.registerReceiver(mIntentReceiver, filter); mPhone.notifyOtaspChanged(TelephonyManager.OTASP_UNINITIALIZED); Loading Loading @@ -1173,8 +1184,8 @@ public class ServiceStateTracker extends Handler { mCdnr.updateEfFromUsim(null /* Usim */); } onUpdateIccAvailability(); if (mUiccApplcation != null && mUiccApplcation.getState() != AppState.APPSTATE_READY) { if (mUiccApplcation == null || mUiccApplcation.getState() != AppState.APPSTATE_READY) { mIsSimReady = false; updateSpnDisplay(); } Loading Loading @@ -2866,9 +2877,9 @@ public class ServiceStateTracker extends Handler { if (ArrayUtils.isEmpty(countriesWithNoService)) { return false; } String currentCountry = mLocaleTracker.getCurrentCountry(); mLastKnownNetworkCountry = mLocaleTracker.getLastKnownCountryIso(); for (String country : countriesWithNoService) { if (country.equalsIgnoreCase(currentCountry)) { if (country.equalsIgnoreCase(mLastKnownNetworkCountry)) { return true; } } Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -2541,7 +2541,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { @Test public void testShouldForceDisplayNoService_forceBasedOnLocale() { // set up unaffected locale (US) and clear the resource doReturn("us").when(mLocaleTracker).getCurrentCountry(); doReturn("us").when(mLocaleTracker).getLastKnownCountryIso(); mContextFixture.putStringArrayResource( com.android.internal.R.array.config_display_no_service_when_sim_unready, new String[0]); Loading @@ -2551,11 +2551,11 @@ public class ServiceStateTrackerTest extends TelephonyTest { mContextFixture.putStringArrayResource( com.android.internal.R.array.config_display_no_service_when_sim_unready, new String[]{"de"}); doReturn("us").when(mLocaleTracker).getCurrentCountry(); doReturn("us").when(mLocaleTracker).getLastKnownCountryIso(); assertFalse(sst.shouldForceDisplayNoService()); // mock the locale to Germany doReturn("de").when(mLocaleTracker).getCurrentCountry(); doReturn("de").when(mLocaleTracker).getLastKnownCountryIso(); assertTrue(sst.shouldForceDisplayNoService()); } Loading Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +15 −4 Original line number Diff line number Diff line Loading @@ -539,6 +539,8 @@ public class ServiceStateTracker extends Handler { /** To identify whether EVENT_SIM_READY is received or not */ private boolean mIsSimReady = false; private String mLastKnownNetworkCountry = ""; @UnsupportedAppUsage private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override Loading @@ -564,6 +566,12 @@ public class ServiceStateTracker extends Handler { } else if (intent.getAction().equals(ACTION_RADIO_OFF)) { mAlarmSwitch = false; powerOffRadioSafely(); } else if (intent.getAction().equals(TelephonyManager.ACTION_NETWORK_COUNTRY_CHANGED)) { String lastKnownNetworkCountry = intent.getStringExtra( TelephonyManager.EXTRA_LAST_KNOWN_NETWORK_COUNTRY); if (!mLastKnownNetworkCountry.equals(lastKnownNetworkCountry)) { updateSpnDisplay(); } } } }; Loading Loading @@ -685,6 +693,9 @@ public class ServiceStateTracker extends Handler { filter = new IntentFilter(); filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED); context.registerReceiver(mIntentReceiver, filter); filter = new IntentFilter(); filter.addAction(TelephonyManager.ACTION_NETWORK_COUNTRY_CHANGED); context.registerReceiver(mIntentReceiver, filter); mPhone.notifyOtaspChanged(TelephonyManager.OTASP_UNINITIALIZED); Loading Loading @@ -1173,8 +1184,8 @@ public class ServiceStateTracker extends Handler { mCdnr.updateEfFromUsim(null /* Usim */); } onUpdateIccAvailability(); if (mUiccApplcation != null && mUiccApplcation.getState() != AppState.APPSTATE_READY) { if (mUiccApplcation == null || mUiccApplcation.getState() != AppState.APPSTATE_READY) { mIsSimReady = false; updateSpnDisplay(); } Loading Loading @@ -2866,9 +2877,9 @@ public class ServiceStateTracker extends Handler { if (ArrayUtils.isEmpty(countriesWithNoService)) { return false; } String currentCountry = mLocaleTracker.getCurrentCountry(); mLastKnownNetworkCountry = mLocaleTracker.getLastKnownCountryIso(); for (String country : countriesWithNoService) { if (country.equalsIgnoreCase(currentCountry)) { if (country.equalsIgnoreCase(mLastKnownNetworkCountry)) { return true; } } Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -2541,7 +2541,7 @@ public class ServiceStateTrackerTest extends TelephonyTest { @Test public void testShouldForceDisplayNoService_forceBasedOnLocale() { // set up unaffected locale (US) and clear the resource doReturn("us").when(mLocaleTracker).getCurrentCountry(); doReturn("us").when(mLocaleTracker).getLastKnownCountryIso(); mContextFixture.putStringArrayResource( com.android.internal.R.array.config_display_no_service_when_sim_unready, new String[0]); Loading @@ -2551,11 +2551,11 @@ public class ServiceStateTrackerTest extends TelephonyTest { mContextFixture.putStringArrayResource( com.android.internal.R.array.config_display_no_service_when_sim_unready, new String[]{"de"}); doReturn("us").when(mLocaleTracker).getCurrentCountry(); doReturn("us").when(mLocaleTracker).getLastKnownCountryIso(); assertFalse(sst.shouldForceDisplayNoService()); // mock the locale to Germany doReturn("de").when(mLocaleTracker).getCurrentCountry(); doReturn("de").when(mLocaleTracker).getLastKnownCountryIso(); assertTrue(sst.shouldForceDisplayNoService()); } Loading