Use getPhoneNumber API to get phone number on T
.. which is supposed to have a lower chance of returning empty than getLine1Number. Bug: 159459637 Test: make Change-Id: I10476fb1a95baf294666dafc9fe77d5732bf0349
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user