diff --git a/src/com/android/settings/network/telephony/ApnPreferenceController.java b/src/com/android/settings/network/telephony/ApnPreferenceController.java index e02d9d4e8fb..f5cd1403172 100644 --- a/src/com/android/settings/network/telephony/ApnPreferenceController.java +++ b/src/com/android/settings/network/telephony/ApnPreferenceController.java @@ -62,12 +62,13 @@ public class ApnPreferenceController extends BasePreferenceController implements public int getAvailabilityStatus() { final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); final boolean isCdmaApn = MobileNetworkUtils.isCdmaOptions(mContext, mSubId) + && carrierConfig != null && carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_APN_SETTING_CDMA_BOOL); final boolean isGsmApn = MobileNetworkUtils.isGsmOptions(mContext, mSubId) + && carrierConfig != null && carrierConfig.getBoolean(CarrierConfigManager.KEY_APN_EXPAND_BOOL); - return carrierConfig != null - && (isCdmaApn || isGsmApn) + return isCdmaApn || isGsmApn ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } diff --git a/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java index dc277d2b4cc..96644285930 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java @@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; @@ -114,6 +115,14 @@ public class ApnPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); } + @Test + public void getAvailabilityStatus_carrierConfigNull_returnUnavailable() { + doReturn(PhoneConstants.PHONE_TYPE_GSM).when(mTelephonyManager).getPhoneType(); + when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(null); + + assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); + } + @Test public void handPreferenceTreeClick_fireIntent() { ArgumentCaptor captor = ArgumentCaptor.forClass(Intent.class);