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

Commit 3384c388 authored by Wei Huang's avatar Wei Huang Committed by Toshiya Ikenaga
Browse files

Support RRO for emergency number conversion map

With current implementation, configurable emergency call number map is
read from global shared resources object that provides access to only
system resources(no application resources).
It means RRO(runtime resource overlay) is NOT supported.

This patch also applies refactoring to remove function
isConvertToEmergencyNumberEnabled.

Bug: 37762325
Test: Manual
Change-Id: Ib1672fabbb77880c89f31bf1661b4690e5c8a064
parent 5e253647
Loading
Loading
Loading
Loading
+15 −19
Original line number Diff line number Diff line
@@ -3093,34 +3093,20 @@ public class PhoneNumberUtils
    /*
     * The config held calling number conversion map, expected to convert to emergency number.
     */
    private static final String[] CONVERT_TO_EMERGENCY_MAP = Resources.getSystem().getStringArray(
            com.android.internal.R.array.config_convert_to_emergency_number_map);
    /**
     * Check whether conversion to emergency number is enabled
     *
     * @return {@code true} when conversion to emergency numbers is enabled,
     *         {@code false} otherwise
     *
     * @hide
     */
    public static boolean isConvertToEmergencyNumberEnabled() {
        return CONVERT_TO_EMERGENCY_MAP != null && CONVERT_TO_EMERGENCY_MAP.length > 0;
    }
    private static String[] sConvertToEmergencyMap = null;

    /**
     * Converts to emergency number based on the conversion map.
     * The conversion map is declared as config_convert_to_emergency_number_map.
     *
     * Make sure {@link #isConvertToEmergencyNumberEnabled} is true before calling
     * this function.
     *
     * @param context a context to use for accessing resources
     * @return The converted emergency number if the number matches conversion map,
     * otherwise original number.
     *
     * @hide
     */
    public static String convertToEmergencyNumber(String number) {
        if (TextUtils.isEmpty(number)) {
    public static String convertToEmergencyNumber(Context context, String number) {
        if (context == null || TextUtils.isEmpty(number)) {
            return number;
        }

@@ -3131,7 +3117,17 @@ public class PhoneNumberUtils
            return number;
        }

        for (String convertMap : CONVERT_TO_EMERGENCY_MAP) {
        if (sConvertToEmergencyMap == null) {
            sConvertToEmergencyMap = context.getResources().getStringArray(
                    com.android.internal.R.array.config_convert_to_emergency_number_map);
        }

        // The conversion map is not defined (this is default). Skip conversion.
        if (sConvertToEmergencyMap == null || sConvertToEmergencyMap.length == 0 ) {
            return number;
        }

        for (String convertMap : sConvertToEmergencyMap) {
            if (DBG) log("convertToEmergencyNumber: " + convertMap);
            String[] entry = null;
            String[] filterNumbers = null;