Fix Settings crashing while displaying phone number slice.

Check if the SubscriptionInfo list is empty to avoid the IndexOutOfBoundsException.

Fixes: 133258244
Test: maunal & robotest

Change-Id: I837f6761ba2b53823f0126f734f65875a30e34dd
This commit is contained in:
Stanley Wang
2019-05-22 16:21:33 +08:00
parent ef0f8a4dab
commit ae78184c5f
2 changed files with 11 additions and 1 deletions

View File

@@ -120,7 +120,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
private CharSequence getFirstPhoneNumber() {
final List<SubscriptionInfo> subscriptionInfoList =
mSubscriptionManager.getActiveSubscriptionInfoList(true);
if (subscriptionInfoList == null) {
if (subscriptionInfoList == null || subscriptionInfoList.isEmpty()) {
return mContext.getText(R.string.device_info_default);
}

View File

@@ -149,6 +149,16 @@ public class PhoneNumberPreferenceControllerTest {
assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default));
}
@Test
public void getSummary_getEmptySubscriptionInfo_shouldShowUnknown() {
List<SubscriptionInfo> infos = new ArrayList<>();
when(mSubscriptionManager.getActiveSubscriptionInfoList(eq(true))).thenReturn(infos);
CharSequence primaryNumber = mController.getSummary();
assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default));
}
@Test
public void isSliceable_shouldBeTrue() {
assertThat(mController.isSliceable()).isTrue();