From 469b708a2a2bca2d77b9a47b4427c358dee7e994 Mon Sep 17 00:00:00 2001 From: Zoey Chen Date: Fri, 18 Nov 2022 04:16:05 +0000 Subject: [PATCH] [Settings] Add NPE protection Bug: 257197354 Test: manual Change-Id: Icd944feac79acb9cfdefb4f82fe1183b0a0e3218 --- .../AutoDataSwitchPreferenceController.java | 2 +- .../EnabledNetworkModePreferenceController.java | 9 ++++++++- .../telephony/MmsMessagePreferenceController.java | 3 ++- .../cdma/CdmaSystemSelectPreferenceController.java | 14 ++++++++++---- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceController.java b/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceController.java index da812133f66..f4543f5004d 100644 --- a/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceController.java +++ b/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceController.java @@ -99,7 +99,7 @@ public class AutoDataSwitchPreferenceController extends TelephonyTogglePreferenc @Override public boolean isChecked() { - return mManager.isMobileDataPolicyEnabled( + return mManager != null && mManager.isMobileDataPolicyEnabled( TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH); } diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index 2525fbda947..1aca6b99fdf 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -135,6 +135,11 @@ public class EnabledNetworkModePreferenceController extends @Override public void updateState(Preference preference) { super.updateState(preference); + + if (mBuilder == null) { + return; + } + final ListPreference listPreference = (ListPreference) preference; mBuilder.setPreferenceEntries(); @@ -871,6 +876,8 @@ public class EnabledNetworkModePreferenceController extends @Override public void onSubscriptionsChanged() { - mBuilder.updateConfig(); + if (mBuilder != null) { + mBuilder.updateConfig(); + } } } diff --git a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.java b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.java index 85d6e73dd42..5908ecd8740 100644 --- a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.java +++ b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.java @@ -96,7 +96,8 @@ public class MmsMessagePreferenceController extends TelephonyTogglePreferenceCon @Override public boolean isChecked() { - return mTelephonyManager.isDataEnabledForApn(ApnSetting.TYPE_MMS); + return mTelephonyManager != null && mTelephonyManager.isDataEnabledForApn( + ApnSetting.TYPE_MMS); } private void refreshPreference() { diff --git a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java index 5dd445379b8..1b9103f93e2 100644 --- a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java +++ b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java @@ -18,6 +18,7 @@ package com.android.settings.network.telephony.cdma; import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA; import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA; +import static com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants.NETWORK_MODE_UNKNOWN; import android.content.Context; import android.provider.Settings; @@ -43,7 +44,10 @@ public class CdmaSystemSelectPreferenceController extends CdmaBasePreferenceCont super.updateState(preference); final ListPreference listPreference = (ListPreference) preference; listPreference.setVisible(getAvailabilityStatus() == AVAILABLE); - final int mode = mTelephonyManager.getCdmaRoamingMode(); + boolean hasTelephonyMgr = mTelephonyManager != null; + final int mode = + hasTelephonyMgr ? mTelephonyManager.getCdmaRoamingMode() + : TelephonyManager.CDMA_ROAMING_MODE_RADIO_DEFAULT; if (mode != TelephonyManager.CDMA_ROAMING_MODE_RADIO_DEFAULT) { if (mode == TelephonyManager.CDMA_ROAMING_MODE_HOME || mode == TelephonyManager.CDMA_ROAMING_MODE_ANY) { @@ -53,9 +57,11 @@ public class CdmaSystemSelectPreferenceController extends CdmaBasePreferenceCont } } - final int settingsNetworkMode = MobileNetworkUtils.getNetworkTypeFromRaf( - (int) mTelephonyManager.getAllowedNetworkTypesForReason( - TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); + final int settingsNetworkMode = + hasTelephonyMgr ? MobileNetworkUtils.getNetworkTypeFromRaf( + (int) mTelephonyManager.getAllowedNetworkTypesForReason( + TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)) + : NETWORK_MODE_UNKNOWN; final boolean enableList = settingsNetworkMode != NETWORK_MODE_LTE_GSM_WCDMA && settingsNetworkMode != NETWORK_MODE_NR_LTE_GSM_WCDMA; listPreference.setEnabled(enableList);