From b8e0cd7989cd0e75975a1ab7c494c4ee6e705c86 Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Wed, 15 Apr 2020 17:56:01 -0700 Subject: [PATCH] Revise strings as per string UX review Fixes: 154148793 Test: m RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.network.telephony Change-Id: Ia510ce5262fbe576718b0785175c0a82acb3c722 --- res/values/strings.xml | 38 +++++++++++++------ .../ContactDiscoveryDialogFragment.java | 26 ++++++++++--- .../ContactDiscoveryPreferenceController.java | 17 ++++++++- .../telephony/MobileNetworkActivity.java | 18 ++++++--- .../ContactDiscoveryDialogFragmentTest.java | 4 +- ...tactDiscoveryPreferenceControllerTest.java | 5 +++ 6 files changed, 85 insertions(+), 23 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index c1b65126df1..ef4f0819438 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -24,6 +24,8 @@ Allow Deny + + Turn on Unknown @@ -7245,19 +7247,33 @@ Use LTE services to improve voice and other communications (recommended) Use 4G services to improve voice and other communications (recommended) - - Contact discovery - - Allows your carrier to discover which calling features your contacts support. - + Send your contacts\u2019 phone numbers to provide enhanced features + + Send contacts to %1$s? + - Enable contact discovery? - - All of the phone numbers in your contacts will be periodically sent to your carrier in order to discover which calling features are supported. + Send contacts to your carrier? + + Your contacts\u2019 phone numbers will be periodically sent to %1$s.\n\nThis info identifies whether your contacts can use certain features, like video calls or some messaging features. + + Your contacts\u2019 phone numbers will be periodically sent to your carrier.\n\nThis info identifies whether your contacts can use certain features, like video calls or some messaging features. Preferred network type diff --git a/src/com/android/settings/network/telephony/ContactDiscoveryDialogFragment.java b/src/com/android/settings/network/telephony/ContactDiscoveryDialogFragment.java index 72730101d6d..26398d7e03c 100644 --- a/src/com/android/settings/network/telephony/ContactDiscoveryDialogFragment.java +++ b/src/com/android/settings/network/telephony/ContactDiscoveryDialogFragment.java @@ -23,6 +23,7 @@ import android.content.DialogInterface; import android.os.Bundle; import android.telephony.ims.ImsManager; import android.telephony.ims.ImsRcsManager; +import android.text.TextUtils; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentManager; @@ -39,9 +40,11 @@ public class ContactDiscoveryDialogFragment extends InstrumentedDialogFragment implements DialogInterface.OnClickListener { private static final String SUB_ID_KEY = "sub_id_key"; + private static final String CARRIER_NAME_KEY = "carrier_name_key"; private static final String DIALOG_TAG = "discovery_dialog:"; private int mSubId; + private CharSequence mCarrierName; private ImsManager mImsManager; /** @@ -50,10 +53,11 @@ public class ContactDiscoveryDialogFragment extends InstrumentedDialogFragment * @param subId The subscription ID to associate with this Dialog. * @return a new instance of ContactDiscoveryDialogFragment. */ - public static ContactDiscoveryDialogFragment newInstance(int subId) { + public static ContactDiscoveryDialogFragment newInstance(int subId, CharSequence carrierName) { final ContactDiscoveryDialogFragment dialogFragment = new ContactDiscoveryDialogFragment(); final Bundle args = new Bundle(); args.putInt(SUB_ID_KEY, subId); + args.putCharSequence(CARRIER_NAME_KEY, carrierName); dialogFragment.setArguments(args); return dialogFragment; @@ -64,18 +68,30 @@ public class ContactDiscoveryDialogFragment extends InstrumentedDialogFragment super.onAttach(context); final Bundle args = getArguments(); mSubId = args.getInt(SUB_ID_KEY); + mCarrierName = args.getCharSequence(CARRIER_NAME_KEY); mImsManager = getImsManager(context); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - final int title = R.string.contact_discovery_opt_in_dialog_title; - int message = R.string.contact_discovery_opt_in_dialog_message; - builder.setMessage(getResources().getString(message)) + CharSequence title; + CharSequence message; + if (!TextUtils.isEmpty(mCarrierName)) { + title = getContext().getString( + R.string.contact_discovery_opt_in_dialog_title, mCarrierName); + message = getContext().getString( + R.string.contact_discovery_opt_in_dialog_message, mCarrierName); + } else { + title = getContext().getString( + R.string.contact_discovery_opt_in_dialog_title_no_carrier_defined); + message = getContext().getString( + R.string.contact_discovery_opt_in_dialog_message_no_carrier_defined); + } + builder.setMessage(message) .setTitle(title) .setIconAttribute(android.R.attr.alertDialogIcon) - .setPositiveButton(android.R.string.ok, this) + .setPositiveButton(R.string.confirmation_turn_on, this) .setNegativeButton(android.R.string.cancel, this); return builder.create(); } diff --git a/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceController.java b/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceController.java index 21d49d9b2b9..880c444ed21 100644 --- a/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceController.java +++ b/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceController.java @@ -22,6 +22,7 @@ import android.net.Uri; import android.os.PersistableBundle; import android.provider.Telephony; import android.telephony.CarrierConfigManager; +import android.telephony.SubscriptionInfo; import android.telephony.ims.ImsManager; import android.util.Log; @@ -34,6 +35,8 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; +import com.android.settings.network.SubscriptionUtil; + /** * Controller for the "Contact Discovery" option present in MobileNetworkSettings. @@ -130,7 +133,19 @@ public class ContactDiscoveryPreferenceController extends TelephonyTogglePrefere private void showContentDiscoveryDialog() { ContactDiscoveryDialogFragment dialog = ContactDiscoveryDialogFragment.newInstance( - mSubId); + mSubId, getCarrierDisplayName(preference.getContext())); dialog.show(mFragmentManager, ContactDiscoveryDialogFragment.getFragmentTag(mSubId)); } + + private CharSequence getCarrierDisplayName(Context context) { + CharSequence result = ""; + + for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(context)) { + if (mSubId == info.getSubscriptionId()) { + result = info.getDisplayName(); + break; + } + } + return result; + } } diff --git a/src/com/android/settings/network/telephony/MobileNetworkActivity.java b/src/com/android/settings/network/telephony/MobileNetworkActivity.java index 5a4c70d7db9..fd7ab97cf85 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkActivity.java +++ b/src/com/android/settings/network/telephony/MobileNetworkActivity.java @@ -22,6 +22,7 @@ import android.os.Bundle; import android.os.UserManager; import android.provider.Settings; import android.telephony.SubscriptionInfo; +import android.telephony.SubscriptionManager; import android.telephony.ims.ImsRcsManager; import android.text.TextUtils; import android.util.Log; @@ -79,7 +80,8 @@ public class MobileNetworkActivity extends SettingsBaseActivity int oldSubId = mCurSubscriptionId; mCurSubscriptionId = updateSubscriptionIndex; mFragmentForceReload = (mCurSubscriptionId == oldSubId); - updateSubscriptions(getSubscription()); + final SubscriptionInfo info = getSubscription(); + updateSubscriptions(info); // If the subscription has changed or the new intent doesnt contain the opt in action, // remove the old discovery dialog. If the activity is being recreated, we will see @@ -91,7 +93,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity // evaluate showing the new discovery dialog if this intent contains an action to show the // opt-in. if (doesIntentContainOptInAction(intent)) { - maybeShowContactDiscoveryDialog(updateSubscriptionIndex); + maybeShowContactDiscoveryDialog(info); } } @@ -125,7 +127,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity final SubscriptionInfo subscription = getSubscription(); updateTitleAndNavigation(subscription); - maybeShowContactDiscoveryDialog(mCurSubscriptionId); + maybeShowContactDiscoveryDialog(subscription); // Since onChanged() will take place immediately when addActiveSubscriptionsListener(), // perform registration after mCurSubscriptionId been configured. @@ -276,7 +278,13 @@ public class MobileNetworkActivity extends SettingsBaseActivity .findFragmentByTag(ContactDiscoveryDialogFragment.getFragmentTag(subId)); } - private void maybeShowContactDiscoveryDialog(int subId) { + private void maybeShowContactDiscoveryDialog(SubscriptionInfo info) { + int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; + CharSequence carrierName = ""; + if (info != null) { + subId = info.getSubscriptionId(); + carrierName = info.getDisplayName(); + } // If this activity was launched using ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN, show the // associated dialog only if the opt-in has not been granted yet. boolean showOptInDialog = doesIntentContainOptInAction(getIntent()) @@ -287,7 +295,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity ContactDiscoveryDialogFragment fragment = getContactDiscoveryFragment(subId); if (showOptInDialog) { if (fragment == null) { - fragment = ContactDiscoveryDialogFragment.newInstance(subId); + fragment = ContactDiscoveryDialogFragment.newInstance(subId, carrierName); } // Only try to show the dialog if it has not already been added, otherwise we may // accidentally add it multiple times, causing multiple dialogs. diff --git a/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryDialogFragmentTest.java b/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryDialogFragmentTest.java index 6aef69955c6..f2db71fe406 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryDialogFragmentTest.java @@ -48,6 +48,7 @@ import org.robolectric.shadows.ShadowAlertDialog; @Config(shadows = ShadowAlertDialog.class) public class ContactDiscoveryDialogFragmentTest { private static final int TEST_SUB_ID = 2; + private static final String TEST_CARRIER = "TestMobile"; @Mock private ImsManager mImsManager; @Mock private ImsRcsManager mImsRcsManager; @@ -60,7 +61,8 @@ public class ContactDiscoveryDialogFragmentTest { public void setUp() { MockitoAnnotations.initMocks(this); mActivity = Robolectric.buildActivity(FragmentActivity.class).setup().get(); - mDialogFragmentUT = spy(ContactDiscoveryDialogFragment.newInstance(TEST_SUB_ID)); + mDialogFragmentUT = spy(ContactDiscoveryDialogFragment.newInstance(TEST_SUB_ID, + TEST_CARRIER)); doReturn(mImsManager).when(mDialogFragmentUT).getImsManager(any()); doReturn(mImsRcsManager).when(mImsManager).getImsRcsManager(TEST_SUB_ID); doReturn(mRcsUceAdapter).when(mImsRcsManager).getUceAdapter(); diff --git a/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceControllerTest.java index 0370bfa00c6..3d54cfbae03 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/ContactDiscoveryPreferenceControllerTest.java @@ -48,6 +48,7 @@ import androidx.fragment.app.FragmentTransaction; import androidx.lifecycle.LifecycleOwner; import androidx.preference.SwitchPreference; +import com.android.settings.network.SubscriptionUtil; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; @@ -59,6 +60,8 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import java.util.Collections; + @RunWith(RobolectricTestRunner.class) public class ContactDiscoveryPreferenceControllerTest { @@ -99,6 +102,8 @@ public class ContactDiscoveryPreferenceControllerTest { mPreferenceControllerUT = new ContactDiscoveryPreferenceController(mContext, "ContactDiscovery"); + // Ensure subscriptionInfo check doesn't fail. + SubscriptionUtil.setAvailableSubscriptionsForTesting(Collections.emptyList()); mPreferenceControllerUT.init(mFragmentManager, TEST_SUB_ID, mLifecycle); mSwitchPreferenceUT = spy(new SwitchPreference(mContext)); mSwitchPreferenceUT.setKey(mPreferenceControllerUT.getPreferenceKey());