Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37faa1f8 authored by Meng Wang's avatar Meng Wang Committed by Android (Google) Code Review
Browse files

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

parents ccbc3702 35b45a77
Loading
Loading
Loading
Loading
+24 −8
Original line number Diff line number Diff line
@@ -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);
    }
}