diff --git a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
index 5dd4453..4f4c35d 100644
--- a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
@@ -18,10 +18,12 @@
 
 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;
 import android.telephony.TelephonyManager;
+import android.util.Log;
 
 import androidx.preference.ListPreference;
 import androidx.preference.Preference;
@@ -33,6 +35,7 @@
  */
 public class CdmaSystemSelectPreferenceController extends CdmaBasePreferenceController
         implements ListPreference.OnPreferenceChangeListener {
+    private static final String TAG = "CdmaSystemSelectPreferenceController";
 
     public CdmaSystemSelectPreferenceController(Context context, String key) {
         super(context, key);
@@ -42,23 +45,36 @@
     public void updateState(Preference preference) {
         super.updateState(preference);
         final ListPreference listPreference = (ListPreference) preference;
-        listPreference.setVisible(getAvailabilityStatus() == AVAILABLE);
-        final int mode = mTelephonyManager.getCdmaRoamingMode();
-        if (mode != TelephonyManager.CDMA_ROAMING_MODE_RADIO_DEFAULT) {
-            if (mode == TelephonyManager.CDMA_ROAMING_MODE_HOME
-                    || mode == TelephonyManager.CDMA_ROAMING_MODE_ANY) {
-                listPreference.setValue(Integer.toString(mode));
-            } else {
-                resetCdmaRoamingModeToDefault();
-            }
+        boolean isVisible = (getAvailabilityStatus() == AVAILABLE);
+        listPreference.setVisible(isVisible);
+        if (!isVisible) {
+            return;
         }
+        boolean hasTelephonyMgr = mTelephonyManager != null;
+        try {
+            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) {
+                    listPreference.setValue(Integer.toString(mode));
+                } else {
+                    resetCdmaRoamingModeToDefault();
+                }
+            }
 
-        final int settingsNetworkMode = MobileNetworkUtils.getNetworkTypeFromRaf(
-                (int) mTelephonyManager.getAllowedNetworkTypesForReason(
-                        TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER));
-        final boolean enableList = settingsNetworkMode != NETWORK_MODE_LTE_GSM_WCDMA
-                && settingsNetworkMode != NETWORK_MODE_NR_LTE_GSM_WCDMA;
-        listPreference.setEnabled(enableList);
+            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);
+        } catch (Exception exception) {
+            Log.e(TAG, "Fail to access framework API", exception);
+        }
     }
 
     @Override
