diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index 9c5a98ef01d..c5e2215aa5a 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -175,18 +175,21 @@ public class EnabledNetworkModePreferenceController extends R.array.enabled_networks_tdscdma_choices); preference.setEntryValues( R.array.enabled_networks_tdscdma_values); - } else if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL) + } else if (carrierConfig != null + && !carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL) && !carrierConfig.getBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL)) { preference.setEntries(R.array.enabled_networks_except_gsm_lte_choices); preference.setEntryValues(R.array.enabled_networks_except_gsm_lte_values); - } else if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)) { + } else if (carrierConfig != null + && !carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)) { int select = mShow4GForLTE ? R.array.enabled_networks_except_gsm_4g_choices : R.array.enabled_networks_except_gsm_choices; preference.setEntries(select); preference.setEntryValues( R.array.enabled_networks_except_gsm_values); - } else if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL)) { + } else if (carrierConfig != null + && !carrierConfig.getBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL)) { preference.setEntries( R.array.enabled_networks_except_lte_choices); preference.setEntryValues( diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java index 8e44dd418ff..42c1b9342d9 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java +++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java @@ -347,6 +347,7 @@ public class MobileNetworkUtils { final PersistableBundle carrierConfig = context.getSystemService( CarrierConfigManager.class).getConfigForSubId(subId); if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID + || carrierConfig == null || !carrierConfig.getBoolean( CarrierConfigManager.KEY_OPERATOR_SELECTION_EXPAND_BOOL) || (carrierConfig.getBoolean(CarrierConfigManager.KEY_CSP_ENABLED_BOOL) diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java index fdc9f7f23f6..f883d8a35fc 100644 --- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java +++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java @@ -112,8 +112,10 @@ public class AutoSelectPreferenceController extends TogglePreferenceController { mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId); final PersistableBundle carrierConfig = mContext.getSystemService( CarrierConfigManager.class).getConfigForSubId(mSubId); - mOnlyAutoSelectInHome = carrierConfig.getBoolean( - CarrierConfigManager.KEY_ONLY_AUTO_SELECT_IN_HOME_NETWORK_BOOL); + mOnlyAutoSelectInHome = carrierConfig != null + ? carrierConfig.getBoolean( + CarrierConfigManager.KEY_ONLY_AUTO_SELECT_IN_HOME_NETWORK_BOOL) + : false; return this; } diff --git a/tests/robotests/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.java index 6639aaeebbf..e9cd731a629 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceControllerTest.java @@ -111,4 +111,12 @@ public class AutoSelectPreferenceControllerTest { mContext.getString(R.string.manual_mode_disallowed_summary, mTelephonyManager.getSimOperatorName())); } + + @Test + public void init_carrierConfigNull_shouldNotCrash() { + when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(null); + + // Should not crash + mController.init(SUB_ID); + } }