[Settings] Unified the source of phone number

Route UI access to phone number into a unified util class within
Settings app.

Bug: 265940535
Test: local

Change-Id: Ic747b0044217101d9a6a1e2cd6e59bbdbcd88021
This commit is contained in:
Bonian Chen
2023-02-13 04:51:06 +00:00
parent 6f76d5dc91
commit c9ace54b03
4 changed files with 21 additions and 8 deletions

View File

@@ -30,7 +30,6 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.DeviceInfoUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -157,7 +156,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
@VisibleForTesting @VisibleForTesting
protected CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) { protected CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) {
final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, final String phoneNumber = SubscriptionUtil.getBidiFormattedPhoneNumber(mContext,
subscriptionInfo); subscriptionInfo);
return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default) return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default)
: phoneNumber; : phoneNumber;

View File

@@ -59,7 +59,7 @@ import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent; import androidx.lifecycle.OnLifecycleEvent;
import com.android.settings.R; 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.Utils;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -329,7 +329,7 @@ public class SimStatusDialogController implements LifecycleObserver {
public void updatePhoneNumber() { public void updatePhoneNumber() {
// If formattedNumber is null or empty, it'll display as "Unknown". // If formattedNumber is null or empty, it'll display as "Unknown".
mDialog.setText(PHONE_NUMBER_VALUE_ID, mDialog.setText(PHONE_NUMBER_VALUE_ID,
DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, mSubscriptionInfo)); SubscriptionUtil.getBidiFormattedPhoneNumber(mContext, mSubscriptionInfo));
} }
private void updateDataState(int state) { private void updateDataState(int state) {

View File

@@ -31,6 +31,8 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.telephony.UiccCardInfo; import android.telephony.UiccCardInfo;
import android.telephony.UiccSlotInfo; import android.telephony.UiccSlotInfo;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; 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.helper.SubscriptionAnnotation;
import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity; import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity;
import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity; import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity;
import com.android.settingslib.DeviceInfoUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -292,7 +293,7 @@ public class SubscriptionUtil {
final Supplier<Stream<DisplayInfo>> uniqueInfos = () -> originalInfos.get().map(info -> { final Supplier<Stream<DisplayInfo>> uniqueInfos = () -> originalInfos.get().map(info -> {
if (duplicateOriginalNames.contains(info.originalName)) { if (duplicateOriginalNames.contains(info.originalName)) {
// This may return null, if the user cannot view the phone number itself. // 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); info.subscriptionInfo);
String lastFourDigits = ""; String lastFourDigits = "";
if (phoneNumber != null) { if (phoneNumber != null) {
@@ -563,6 +564,20 @@ public class SubscriptionUtil {
return PhoneNumberUtils.formatNumber(rawPhoneNumber, countryIso); 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 * Returns the subscription on a removable sim card. The device does not need to be on removable
* slot. * slot.

View File

@@ -47,7 +47,6 @@ import androidx.appcompat.app.AlertDialog;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.DeviceInfoUtils;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
@@ -184,7 +183,7 @@ public class RenameMobileNetworkDialogFragment extends InstrumentedDialogFragmen
phoneTitle.setVisibility(info.isOpportunistic() ? View.GONE : View.VISIBLE); phoneTitle.setVisibility(info.isOpportunistic() ? View.GONE : View.VISIBLE);
final TextView phoneNumber = view.findViewById(R.id.number_value); 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)) { if (!TextUtils.isEmpty(pn)) {
phoneNumber.setText(pn); phoneNumber.setText(pn);
} }