diff --git a/src/com/android/settings/network/telephony/Enable2gPreferenceController.java b/src/com/android/settings/network/telephony/Enable2gPreferenceController.java index cf08d107528..d336cb47e47 100644 --- a/src/com/android/settings/network/telephony/Enable2gPreferenceController.java +++ b/src/com/android/settings/network/telephony/Enable2gPreferenceController.java @@ -72,7 +72,7 @@ public class Enable2gPreferenceController extends TelephonyTogglePreferenceContr public int getAvailabilityStatus(int subId) { final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId); boolean visible = - subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID + SubscriptionManager.isUsableSubscriptionId(subId) && carrierConfig != null && !carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENABLE_2G) && mTelephonyManager.isRadioInterfaceCapabilitySupported( @@ -89,6 +89,9 @@ public class Enable2gPreferenceController extends TelephonyTogglePreferenceContr @Override public boolean setChecked(boolean isChecked) { + if (!SubscriptionManager.isUsableSubscriptionId(mSubId)) { + return false; + } long currentlyAllowedNetworkTypes = mTelephonyManager.getAllowedNetworkTypesForReason( mTelephonyManager.ALLOWED_NETWORK_TYPES_REASON_ENABLE_2G); boolean enabled = (currentlyAllowedNetworkTypes & BITMASK_2G) != 0; diff --git a/tests/unit/src/com/android/settings/network/telephony/Enable2gPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/Enable2gPreferenceControllerTest.java index 293a19dad09..5ade97953e0 100644 --- a/tests/unit/src/com/android/settings/network/telephony/Enable2gPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/Enable2gPreferenceControllerTest.java @@ -48,6 +48,8 @@ public final class Enable2gPreferenceControllerTest { @Mock private TelephonyManager mTelephonyManager; @Mock + private TelephonyManager mInvalidTelephonyManager; + @Mock private CarrierConfigManager mCarrierConfigManager; private PersistableBundle mPersistableBundle; @@ -65,6 +67,8 @@ public final class Enable2gPreferenceControllerTest { .thenReturn(mCarrierConfigManager); doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID); + doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId( + SubscriptionManager.INVALID_SUBSCRIPTION_ID); mPersistableBundle = new PersistableBundle(); doReturn(mPersistableBundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); @@ -120,6 +124,18 @@ public final class Enable2gPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); } + @Test + public void setChecked_invalidSubIdAndIsCheckedTrue_returnFalse() { + mController.init(SubscriptionManager.INVALID_SUBSCRIPTION_ID); + assertThat(mController.setChecked(true)).isFalse(); + } + + @Test + public void setChecked_invalidSubIdAndIsCheckedFalse_returnFalse() { + mController.init(SubscriptionManager.INVALID_SUBSCRIPTION_ID); + assertThat(mController.setChecked(false)).isFalse(); + } + @Test public void onPreferenceChange_update() { // Set "Enable 2G" flag to "on"