diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
index 3906fc8..9e706c4 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
@@ -415,14 +415,16 @@
         if (signalStrength == null) {
             return;
         }
-        final int subscriptionId = mSubscriptionInfo.getSubscriptionId();
-        final PersistableBundle carrierConfig =
-                mCarrierConfigManager.getConfigForSubId(subscriptionId);
         // by default we show the signal strength
         boolean showSignalStrength = true;
-        if (carrierConfig != null) {
-            showSignalStrength = carrierConfig.getBoolean(
-                    CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL);
+        if (mSubscriptionInfo != null) {
+            final int subscriptionId = mSubscriptionInfo.getSubscriptionId();
+            final PersistableBundle carrierConfig =
+                    mCarrierConfigManager.getConfigForSubId(subscriptionId);
+            if (carrierConfig != null) {
+                showSignalStrength = carrierConfig.getBoolean(
+                        CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL);
+            }
         }
         if (!showSignalStrength) {
             mDialog.removeSettingFromScreen(SIGNAL_STRENGTH_LABEL_ID);
@@ -455,6 +457,14 @@
     }
 
     private void updateNetworkType() {
+        if (mSubscriptionInfo == null) {
+            final String unknownNetworkType =
+                    getNetworkTypeName(TelephonyManager.NETWORK_TYPE_UNKNOWN);
+            mDialog.setText(CELL_VOICE_NETWORK_TYPE_VALUE_ID, unknownNetworkType);
+            mDialog.setText(CELL_DATA_NETWORK_TYPE_VALUE_ID, unknownNetworkType);
+            return;
+        }
+
         // Whether EDGE, UMTS, etc...
         String dataNetworkTypeName = null;
         String voiceNetworkTypeName = null;
@@ -497,14 +507,16 @@
     }
 
     private void updateIccidNumber() {
-        final int subscriptionId = mSubscriptionInfo.getSubscriptionId();
-        final PersistableBundle carrierConfig =
-                mCarrierConfigManager.getConfigForSubId(subscriptionId);
         // do not show iccid by default
         boolean showIccId = false;
-        if (carrierConfig != null) {
-            showIccId = carrierConfig.getBoolean(
-                    CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL);
+        if (mSubscriptionInfo != null) {
+            final int subscriptionId = mSubscriptionInfo.getSubscriptionId();
+            final PersistableBundle carrierConfig =
+                    mCarrierConfigManager.getConfigForSubId(subscriptionId);
+            if (carrierConfig != null) {
+                showIccId = carrierConfig.getBoolean(
+                        CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL);
+            }
         }
         if (!showIccId) {
             mDialog.removeSettingFromScreen(ICCID_INFO_LABEL_ID);
@@ -556,6 +568,9 @@
     }
 
     private boolean isImsRegistrationStateShowUp() {
+        if (mSubscriptionInfo == null) {
+            return false;
+        }
         final int subscriptionId = mSubscriptionInfo.getSubscriptionId();
         final PersistableBundle carrierConfig =
                 mCarrierConfigManager.getConfigForSubId(subscriptionId);
