diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index cb5b5d0fe68..919913f3efd 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -87,7 +87,8 @@ public class EnabledNetworkModePreferenceController extends final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(subId); if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { visible = false; - } else if (carrierConfig == null) { + } else if (carrierConfig == null + || !CarrierConfigManager.isConfigForIdentifiedCarrier(carrierConfig)) { visible = false; } else if (carrierConfig.getBoolean( CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL) diff --git a/tests/unit/src/com/android/settings/network/EnabledNetworkModePreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/EnabledNetworkModePreferenceControllerTest.java index 5672df793b3..c9452063a95 100644 --- a/tests/unit/src/com/android/settings/network/EnabledNetworkModePreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/EnabledNetworkModePreferenceControllerTest.java @@ -106,6 +106,7 @@ public class EnabledNetworkModePreferenceControllerTest { mPersistableBundle = new PersistableBundle(); doReturn(mPersistableBundle).when(mCarrierConfigCache).getConfig(); doReturn(mPersistableBundle).when(mCarrierConfigCache).getConfigForSubId(SUB_ID); + mPersistableBundle.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, true); mPreference = new ListPreference(mContext); mController = new EnabledNetworkModePreferenceController(mContext, KEY); mockAllowedNetworkTypes(ALLOWED_ALL_NETWORK_TYPE); @@ -145,6 +146,14 @@ public class EnabledNetworkModePreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); } + @UiThreadTest + @Test + public void getAvailabilityStatus_carrierConfigNotReady_returnUnavailable() { + mPersistableBundle.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, false); + + assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); + } + @UiThreadTest @Test public void getAvailabilityStatus_notWorldPhone_returnAvailable() {