From 8aeca8e75552f97dfcb8d70cb7fab86e3ebcd934 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Thu, 10 Oct 2024 14:41:24 +0800 Subject: [PATCH] Disable the phone number when no subscription To align with SIM status, if no sim in this slot, show "Not available" and disable instead. Fix: 333386151 Flag: EXEMPT bug fix Test: manual - on about phone Test: unit test Change-Id: I5053863cc69ff468036df87a8c87447ab0c2aaed --- .../PhoneNumberPreferenceController.java | 23 ++++++------------- .../PhoneNumberPreferenceControllerTest.java | 11 ++++----- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java index 6df100ca4ec..421963eb31c 100644 --- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java @@ -84,7 +84,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { for (int simSlotNumber = 0; simSlotNumber < mPreferenceList.size(); simSlotNumber++) { final Preference simStatusPreference = mPreferenceList.get(simSlotNumber); simStatusPreference.setTitle(getPreferenceTitle(simSlotNumber)); - simStatusPreference.setSummary(getPhoneNumber(simSlotNumber)); + setPhoneNumber(simSlotNumber); } } @@ -93,24 +93,15 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { return true; } - private CharSequence getFirstPhoneNumber() { - final List subscriptionInfoList = - mSubscriptionManager.getActiveSubscriptionInfoList(); - if (subscriptionInfoList == null || subscriptionInfoList.isEmpty()) { - return mContext.getText(R.string.device_info_default); - } - - // For now, We only return first result for slice view. - return getFormattedPhoneNumber(subscriptionInfoList.get(0)); - } - - private CharSequence getPhoneNumber(int simSlot) { + private void setPhoneNumber(int simSlot) { + final Preference simStatusPreference = mPreferenceList.get(simSlot); final SubscriptionInfo subscriptionInfo = getSubscriptionInfo(simSlot); + simStatusPreference.setEnabled(subscriptionInfo != null); if (subscriptionInfo == null) { - return mContext.getText(R.string.device_info_default); + simStatusPreference.setSummary(mContext.getString(R.string.device_info_not_available)); + } else { + simStatusPreference.setSummary(getFormattedPhoneNumber(subscriptionInfo)); } - - return getFormattedPhoneNumber(subscriptionInfo); } private CharSequence getPreferenceTitle(int simSlot) { diff --git a/tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java index 9a5399c5f07..05e2f246dbd 100644 --- a/tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java @@ -37,6 +37,7 @@ import androidx.preference.PreferenceScreen; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.settings.R; import com.android.settings.testutils.ResourcesUtils; import org.junit.Before; @@ -135,25 +136,23 @@ public class PhoneNumberPreferenceControllerTest { } @Test - public void getSummary_cannotGetActiveSubscriptionInfo_shouldShowUnknown() { + public void getSummary_cannotGetActiveSubscriptionInfo_shouldShowNotAvailable() { when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(null); mController.displayPreference(mScreen); mController.updateState(mPreference); - verify(mPreference).setSummary(ResourcesUtils.getResourcesString( - mContext, "device_info_default")); + verify(mPreference).setSummary(mContext.getString(R.string.device_info_not_available)); } @Test - public void getSummary_getEmptySubscriptionInfo_shouldShowUnknown() { + public void getSummary_getEmptySubscriptionInfo_shouldShowNotAvailable() { List infos = new ArrayList<>(); when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(infos); mController.displayPreference(mScreen); mController.updateState(mPreference); - verify(mPreference).setSummary(ResourcesUtils.getResourcesString( - mContext, "device_info_default")); + verify(mPreference).setSummary(mContext.getString(R.string.device_info_not_available)); } }