diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java index f91b98f249e..d1bf80862ca 100644 --- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java @@ -30,7 +30,6 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.network.SubscriptionUtil; -import com.android.settingslib.DeviceInfoUtils; import java.util.ArrayList; import java.util.List; @@ -157,7 +156,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { @VisibleForTesting protected CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) { - final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, + final String phoneNumber = SubscriptionUtil.getBidiFormattedPhoneNumber(mContext, subscriptionInfo); return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default) : phoneNumber; diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java index e6f7a0ebc75..d3058cef57b 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java @@ -59,7 +59,7 @@ import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import com.android.settings.R; -import com.android.settingslib.DeviceInfoUtils; +import com.android.settings.network.SubscriptionUtil; import com.android.settingslib.Utils; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -329,7 +329,7 @@ public class SimStatusDialogController implements LifecycleObserver { public void updatePhoneNumber() { // If formattedNumber is null or empty, it'll display as "Unknown". mDialog.setText(PHONE_NUMBER_VALUE_ID, - DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, mSubscriptionInfo)); + SubscriptionUtil.getBidiFormattedPhoneNumber(mContext, mSubscriptionInfo)); } private void updateDataState(int state) { diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java index d6cac10ff58..a5629901966 100644 --- a/src/com/android/settings/network/SubscriptionUtil.java +++ b/src/com/android/settings/network/SubscriptionUtil.java @@ -31,6 +31,8 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.UiccCardInfo; import android.telephony.UiccSlotInfo; +import android.text.BidiFormatter; +import android.text.TextDirectionHeuristics; import android.text.TextUtils; import android.util.Log; @@ -42,7 +44,6 @@ import com.android.settings.network.helper.SelectableSubscriptions; import com.android.settings.network.helper.SubscriptionAnnotation; import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity; import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity; -import com.android.settingslib.DeviceInfoUtils; import java.util.ArrayList; import java.util.Collections; @@ -292,7 +293,7 @@ public class SubscriptionUtil { final Supplier> uniqueInfos = () -> originalInfos.get().map(info -> { if (duplicateOriginalNames.contains(info.originalName)) { // This may return null, if the user cannot view the phone number itself. - final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(context, + final String phoneNumber = getBidiFormattedPhoneNumber(context, info.subscriptionInfo); String lastFourDigits = ""; if (phoneNumber != null) { @@ -563,6 +564,20 @@ public class SubscriptionUtil { return PhoneNumberUtils.formatNumber(rawPhoneNumber, countryIso); } + /** + * To get the formatting text for display in a potentially opposite-directionality context + * without garbling. + * @param subscriptionInfo {@link SubscriptionInfo} subscription information. + * @return Returns phone number with Bidi format. + */ + @Nullable + public static String getBidiFormattedPhoneNumber(Context context, + SubscriptionInfo subscriptionInfo) { + String phoneNumber = getFormattedPhoneNumber(context, subscriptionInfo); + return (phoneNumber == null) ? phoneNumber : + BidiFormatter.getInstance().unicodeWrap(phoneNumber, TextDirectionHeuristics.LTR); + } + /** * Returns the subscription on a removable sim card. The device does not need to be on removable * slot. diff --git a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java index ec48c82ce4a..88233534dd2 100644 --- a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java +++ b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java @@ -47,7 +47,6 @@ import androidx.appcompat.app.AlertDialog; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.network.SubscriptionUtil; -import com.android.settingslib.DeviceInfoUtils; import com.google.common.collect.ImmutableMap; @@ -184,7 +183,7 @@ public class RenameMobileNetworkDialogFragment extends InstrumentedDialogFragmen phoneTitle.setVisibility(info.isOpportunistic() ? View.GONE : View.VISIBLE); final TextView phoneNumber = view.findViewById(R.id.number_value); - final String pn = DeviceInfoUtils.getBidiFormattedPhoneNumber(getContext(), info); + final String pn = SubscriptionUtil.getBidiFormattedPhoneNumber(getContext(), info); if (!TextUtils.isEmpty(pn)) { phoneNumber.setText(pn); }