Null check added when updating the roaming status.

If the serviceState is null, calling getRoaming will cause a crash.
Instead of calling this method, set the string to not-roaming if the
value is null.

Test: atest -c SettingsUnitTest
Bug: 184334050
Change-Id: Ifa8a006838ea17f7d098c1b83bb6ab0349e7d569
This commit is contained in:
Jeremy Goldman
2021-06-17 10:31:50 +08:00
parent 5a8476a709
commit 300d35062e

View File

@@ -38,7 +38,6 @@ import android.telephony.CellBroadcastIntents;
import android.telephony.CellBroadcastService;
import android.telephony.CellSignalStrength;
import android.telephony.ICellBroadcastService;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
@@ -245,6 +244,8 @@ public class SimStatusDialogController implements LifecycleObserver {
private void updateSubscriptionStatus() {
updateNetworkProvider();
// getServiceState() may return null when the subscription is inactive
// or when there was an error communicating with the phone process.
final ServiceState serviceState = mTelephonyManager.getServiceState();
final SignalStrength signalStrength = mTelephonyManager.getSignalStrength();
@@ -577,7 +578,10 @@ public class SimStatusDialogController implements LifecycleObserver {
}
private void updateRoamingStatus(ServiceState serviceState) {
if (serviceState.getRoaming()) {
// If the serviceState is null, we assume that roaming is disabled.
if (serviceState == null) {
mDialog.setText(ROAMING_INFO_VALUE_ID, mRes.getString(R.string.radioInfo_unknown));
} else if (serviceState.getRoaming()) {
mDialog.setText(ROAMING_INFO_VALUE_ID, mRes.getString(R.string.radioInfo_roaming_in));
} else {
mDialog.setText(ROAMING_INFO_VALUE_ID, mRes.getString(R.string.radioInfo_roaming_not));