From 3384c388b2e9ccc307561d7aa36e89a9c3b9069a Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Fri, 21 Apr 2017 18:59:31 +0900 Subject: [PATCH] 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 --- .../android/telephony/PhoneNumberUtils.java | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java index bc5e4d51e0f8f..07259cf3c8d9b 100644 --- a/telephony/java/android/telephony/PhoneNumberUtils.java +++ b/telephony/java/android/telephony/PhoneNumberUtils.java @@ -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;