Merge "Use getPhoneNumber API to get phone number on T"

This commit is contained in:
Meng Wang
2021-12-07 17:04:12 +00:00
committed by Android (Google) Code Review

View File

@@ -26,6 +26,7 @@ import android.system.Os;
import android.system.StructUtsname;
import android.telephony.PhoneNumberUtils;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
@@ -33,7 +34,9 @@ import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.Log;
import androidx.annotation.RequiresApi;
import androidx.annotation.VisibleForTesting;
import androidx.core.os.BuildCompat;
import java.io.BufferedReader;
import java.io.FileReader;
@@ -179,10 +182,8 @@ public class DeviceInfoUtils {
SubscriptionInfo subscriptionInfo) {
String formattedNumber = null;
if (subscriptionInfo != null) {
final TelephonyManager telephonyManager = context.getSystemService(
TelephonyManager.class);
final String rawNumber = telephonyManager.createForSubscriptionId(
subscriptionInfo.getSubscriptionId()).getLine1Number();
final String rawNumber = getRawPhoneNumber(
context, subscriptionInfo.getSubscriptionId());
if (!TextUtils.isEmpty(rawNumber)) {
formattedNumber = PhoneNumberUtils.formatNumber(rawNumber);
}
@@ -194,12 +195,10 @@ public class DeviceInfoUtils {
List<SubscriptionInfo> subscriptionInfoList) {
StringBuilder sb = new StringBuilder();
if (subscriptionInfoList != null) {
final TelephonyManager telephonyManager = context.getSystemService(
TelephonyManager.class);
final int count = subscriptionInfoList.size();
for (SubscriptionInfo subscriptionInfo : subscriptionInfoList) {
final String rawNumber = telephonyManager.createForSubscriptionId(
subscriptionInfo.getSubscriptionId()).getLine1Number();
final String rawNumber = getRawPhoneNumber(
context, subscriptionInfo.getSubscriptionId());
if (!TextUtils.isEmpty(rawNumber)) {
sb.append(PhoneNumberUtils.formatNumber(rawNumber)).append("\n");
}
@@ -219,4 +218,21 @@ public class DeviceInfoUtils {
final String phoneNumber = getFormattedPhoneNumber(context, subscriptionInfo);
return BidiFormatter.getInstance().unicodeWrap(phoneNumber, TextDirectionHeuristics.LTR);
}
private static String getRawPhoneNumber(Context context, int subscriptionId) {
if (BuildCompat.isAtLeastT()) {
return getRawPhoneNumberFromT(context, subscriptionId);
} else {
final TelephonyManager telephonyManager = context.getSystemService(
TelephonyManager.class);
return telephonyManager.createForSubscriptionId(subscriptionId).getLine1Number();
}
}
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
private static String getRawPhoneNumberFromT(Context context, int subscriptionId) {
final SubscriptionManager subscriptionManager = context.getSystemService(
SubscriptionManager.class);
return subscriptionManager.getPhoneNumber(subscriptionId);
}
}