diff --git a/res/values/strings.xml b/res/values/strings.xml index 8aeefdbab90..1753ce53398 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -12495,6 +12495,16 @@ Calls SMS + + preferred + + calls preferred + + SMS preferred + + unavailable + + No SIM Preferences diff --git a/src/com/android/settings/network/NetworkProviderCallsSmsController.java b/src/com/android/settings/network/NetworkProviderCallsSmsController.java index f7d9221a451..3a228dced19 100644 --- a/src/com/android/settings/network/NetworkProviderCallsSmsController.java +++ b/src/com/android/settings/network/NetworkProviderCallsSmsController.java @@ -22,7 +22,6 @@ import android.content.Context; import android.os.UserManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; -import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LifecycleObserver; @@ -42,10 +41,6 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl private static final String TAG = "NetworkProviderCallsSmsController"; private static final String KEY = "calls_and_sms"; - private static final String PREFERRED_CALL_SMS = "preferred"; - private static final String PREFERRED_CALL = "calls preferred"; - private static final String PREFERRED_SMS = "SMS preferred"; - private static final String UNAVAILABLE = "unavailable"; private UserManager mUserManager; private SubscriptionManager mSubscriptionManager; @@ -91,7 +86,7 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl mSubscriptionManager); if (subs.isEmpty()) { - return null; + return setSummaryResId(R.string.calls_sms_no_sim); } else { final StringBuilder summary = new StringBuilder(); for (SubscriptionInfo subInfo : subs) { @@ -131,19 +126,23 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl boolean isSmsPreferred = subId == getDefaultSmsSubscriptionId(); if (!SubscriptionManager.isValidSubscriptionId(subId)) { - status = UNAVAILABLE; + status = setSummaryResId(R.string.calls_sms_unavailable); } else { if (isDataPreferred && isSmsPreferred) { - status = PREFERRED_CALL_SMS; + status = setSummaryResId(R.string.calls_sms_preferred); } else if (isDataPreferred) { - status = PREFERRED_CALL; + status = setSummaryResId(R.string.calls_sms_calls_preferred); } else if (isSmsPreferred) { - status = PREFERRED_SMS; + status = setSummaryResId(R.string.calls_sms_sms_preferred); } } return status; } + private String setSummaryResId(int resId) { + return mContext.getResources().getString(resId); + } + @VisibleForTesting protected int getDefaultVoiceSubscriptionId(){ return SubscriptionManager.getDefaultVoiceSubscriptionId(); @@ -167,6 +166,7 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl if (subs.isEmpty()) { mPreference.setEnabled(false); } else { + mPreference.setEnabled(true); mPreference.setFragment(NetworkProviderCallsSmsFragment.class.getCanonicalName()); } } diff --git a/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java b/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java index 061e1c01c66..8444f11bf0f 100644 --- a/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java +++ b/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java @@ -27,6 +27,7 @@ import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.text.TextUtils; +import com.android.settings.testutils.ResourcesUtils; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.RestrictedPreference; @@ -46,6 +47,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.ArrayList; import java.util.Arrays; import static org.mockito.Mockito.doReturn; @@ -60,10 +62,6 @@ public class NetworkProviderCallsSmsControllerTest { private static final String KEY_PREFERENCE_CALLS_SMS = "calls_and_sms"; private static final String DISPLAY_NAME_1 = "Sub 1"; private static final String DISPLAY_NAME_2 = "Sub 2"; - private static final String PREFERRED_CALL_SMS = "preferred"; - private static final String PREFERRED_CALL = "calls preferred"; - private static final String PREFERRED_SMS = "SMS preferred"; - private static final String UNAVAILABLE = "unavailable"; @Mock private SubscriptionManager mSubscriptionManager; @@ -150,6 +148,20 @@ public class NetworkProviderCallsSmsControllerTest { when(subscriptionInfo.getDisplayName()).thenReturn(displayName); } + private String setSummaryResId(String resName) { + return ResourcesUtils.getResourcesString(mContext, resName); + } + + @Test + @UiThreadTest + public void getSummary_noSim_returnNoSim() { + when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(new ArrayList<>()); + displayPreferenceWithLifecycle(); + + assertTrue(TextUtils.equals(mController.getSummary(), + setSummaryResId("calls_sms_no_sim"))); + } + @Test @UiThreadTest public void getSummary_invalidSubId_returnUnavailable() { @@ -162,7 +174,7 @@ public class NetworkProviderCallsSmsControllerTest { final StringBuilder summary = new StringBuilder(); summary.append(DISPLAY_NAME_1) .append(" (") - .append(UNAVAILABLE) + .append(setSummaryResId("calls_sms_unavailable")) .append(")"); assertTrue(TextUtils.equals(mController.getSummary(), summary)); @@ -181,7 +193,7 @@ public class NetworkProviderCallsSmsControllerTest { final StringBuilder summary = new StringBuilder(); summary.append(DISPLAY_NAME_1) .append(" (") - .append(UNAVAILABLE) + .append(setSummaryResId("calls_sms_unavailable")) .append(")") .append(", ") .append(DISPLAY_NAME_2); @@ -233,12 +245,12 @@ public class NetworkProviderCallsSmsControllerTest { final StringBuilder summary = new StringBuilder(); summary.append(DISPLAY_NAME_1) .append(" (") - .append(PREFERRED_CALL) + .append(setSummaryResId("calls_sms_calls_preferred")) .append(")") .append(", ") .append(DISPLAY_NAME_2) .append(" (") - .append(PREFERRED_SMS) + .append(setSummaryResId("calls_sms_sms_preferred")) .append(")"); assertTrue(TextUtils.equals(mController.getSummary(), summary)); @@ -260,12 +272,12 @@ public class NetworkProviderCallsSmsControllerTest { final StringBuilder summary = new StringBuilder(); summary.append(DISPLAY_NAME_1) .append(" (") - .append(PREFERRED_SMS) + .append(setSummaryResId("calls_sms_sms_preferred")) .append(")") .append(", ") .append(DISPLAY_NAME_2) .append(" (") - .append(PREFERRED_CALL) + .append(setSummaryResId("calls_sms_calls_preferred")) .append(")"); assertTrue(TextUtils.equals(mController.getSummary(), summary)); @@ -287,7 +299,7 @@ public class NetworkProviderCallsSmsControllerTest { final StringBuilder summary = new StringBuilder(); summary.append(DISPLAY_NAME_1) .append(" (") - .append(PREFERRED_CALL_SMS) + .append(setSummaryResId("calls_sms_preferred")) .append(")") .append(", ") .append(DISPLAY_NAME_2);