Fixed a Settings crash when entering SIM status
Bug: 18596763
Change-Id: I699268345c342be05814bb531027dd53cba1c370
diff --git a/src/com/android/settings/deviceinfo/SimStatus.java b/src/com/android/settings/deviceinfo/SimStatus.java
index 2afdb84..ce8484d 100644
--- a/src/com/android/settings/deviceinfo/SimStatus.java
+++ b/src/com/android/settings/deviceinfo/SimStatus.java
@@ -153,7 +153,7 @@
}
}
- mSir = mSelectableSubInfos.get(0);
+ mSir = mSelectableSubInfos.size() > 0 ? mSelectableSubInfos.get(0) : null;
if (mSelectableSubInfos.size() > 1) {
setContentView(R.layout.sim_information);
@@ -363,33 +363,35 @@
}
private void updatePhoneInfos() {
- final Phone phone = PhoneFactory.getPhone(SubscriptionManager.getPhoneId(
+ if (mSir != null) {
+ final Phone phone = PhoneFactory.getPhone(SubscriptionManager.getPhoneId(
mSir.getSubscriptionId()));
- if (UserHandle.myUserId() == UserHandle.USER_OWNER
- && mSir.getSubscriptionId() != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
- if (phone == null) {
- Log.e(TAG, "Unable to locate a phone object for the given Subscription ID.");
- return;
+ if (UserHandle.myUserId() == UserHandle.USER_OWNER
+ && mSir.getSubscriptionId() != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ if (phone == null) {
+ Log.e(TAG, "Unable to locate a phone object for the given Subscription ID.");
+ return;
+ }
+
+ mPhone = phone;
+ mPhoneStateListener = new PhoneStateListener(mSir.getSubscriptionId()) {
+ @Override
+ public void onDataConnectionStateChanged(int state) {
+ updateDataState();
+ updateNetworkType();
+ }
+
+ @Override
+ public void onSignalStrengthsChanged(SignalStrength signalStrength) {
+ updateSignalStrength(signalStrength);
+ }
+
+ @Override
+ public void onServiceStateChanged(ServiceState serviceState) {
+ updateServiceState(serviceState);
+ }
+ };
}
-
- mPhone = phone;
- mPhoneStateListener = new PhoneStateListener(mSir.getSubscriptionId()) {
- @Override
- public void onDataConnectionStateChanged(int state) {
- updateDataState();
- updateNetworkType();
- }
-
- @Override
- public void onSignalStrengthsChanged(SignalStrength signalStrength) {
- updateSignalStrength(signalStrength);
- }
-
- @Override
- public void onServiceStateChanged(ServiceState serviceState) {
- updateServiceState(serviceState);
- }
- };
}
}
private OnTabChangeListener mTabListener = new OnTabChangeListener() {