Fix NullPointerException, TelephonyManager.getServiceState is null

Add the null protect for TelephonyManager.getServiceState.

Bug: 166676020
Test: 1. make RunSettingsRoboTests ROBOTEST_FILTER=\
RenameMobileNetworkDialogFragmentTest (PASS)
2. make RunSettingsRoboTests ROBOTEST_FILTER=\
AutoSelectPreferenceControllerTest (PASS)
3. make RunSettingsRoboTests ROBOTEST_FILTER=\
PreferredNetworkModePreferenceControllerTest (PASS)
4. make RunSettingsRoboTests ROBOTEST_FILTER=\
EnabledNetworkModePreferenceControllerTest (PASS)

Merged-In: I61e59f7ba9d6c64019d620d6cb80099ded41473f
Change-Id: Ib80e5e7498a078435185814d11c3b2bcc4318f59
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index 3b5e6e0..9339d68 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -48,6 +48,7 @@
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.CarrierConfigManager;
+import android.telephony.ServiceState;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -475,8 +476,9 @@
         if (carrierConfig.getBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL)) {
             return true;
         }
-
-        final String operatorNumeric = telephonyManager.getServiceState().getOperatorNumeric();
+        final ServiceState serviceState = telephonyManager.getServiceState();
+        final String operatorNumeric =
+                (serviceState != null) ? serviceState.getOperatorNumeric() : null;
         final String[] numericArray = carrierConfig.getStringArray(
                 CarrierConfigManager.KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY);
         if (numericArray == null || operatorNumeric == null) {
diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
index 525cf9f..1813fa7 100644
--- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java
+++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
@@ -404,6 +404,9 @@
         if (mTelephonyManager.getDataState() == mTelephonyManager.DATA_CONNECTED) {
             // Try to get the network registration states
             final ServiceState ss = mTelephonyManager.getServiceState();
+            if (ss == null) {
+                return;
+            }
             final List<NetworkRegistrationInfo> networkList =
                     ss.getNetworkRegistrationInfoListForTransportType(
                             AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
diff --git a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
index e53a452..abcf621 100644
--- a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
+++ b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
@@ -163,7 +163,7 @@
         final TextView operatorName = view.findViewById(R.id.operator_name_value);
         mTelephonyManager = mTelephonyManager.createForSubscriptionId(mSubId);
         final ServiceState serviceState = mTelephonyManager.getServiceState();
-        operatorName.setText(serviceState.getOperatorAlphaLong());
+        operatorName.setText(serviceState == null ? "" : serviceState.getOperatorAlphaLong());
 
         final TextView phoneTitle = view.findViewById(R.id.number_label);
         phoneTitle.setVisibility(info.isOpportunistic() ? View.GONE : View.VISIBLE);
diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
index 361f58e..d981362 100644
--- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
@@ -29,6 +29,7 @@
 import android.os.SystemClock;
 import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
+import android.telephony.ServiceState;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 
@@ -125,7 +126,13 @@
         super.updateState(preference);
 
         preference.setSummary(null);
-        if (mTelephonyManager.getServiceState().getRoaming()) {
+        final ServiceState serviceState = mTelephonyManager.getServiceState();
+        if (serviceState == null) {
+            preference.setEnabled(false);
+            return;
+        }
+
+        if (serviceState.getRoaming()) {
             preference.setEnabled(true);
         } else {
             preference.setEnabled(!mOnlyAutoSelectInHome);