[Settings] Avoid from crash when pull out SIM
Avoid from crash when pull out SIM under SimStatusDialogController.
Bug: 153512823
Test: manual
Merged-In: I3869326bdfb65368827f25469ae83539a68e171f
Change-Id: I60500c058cf15bc432e46e27fe4b9fb1ae2989b7
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);