Add configurable emergency call number support
am: 20c747c038
Change-Id: Id9d5e6bc7026b17c9d52750d1cd506e03ea12b06
This commit is contained in:
@@ -2595,4 +2595,12 @@
|
||||
<!-- Verizon requires any SMS that starts with //VZWVVM to be treated as a VVM SMS-->
|
||||
<item>310004,310010,310012,310013,310590,310890,310910,311110,311270,311271,311272,311273,311274,311275,311276,311277,311278,311279,311280,311281,311282,311283,311284,311285,311286,311287,311288,311289,311390,311480,311481,311482,311483,311484,311485,311486,311487,311488,311489;^//VZWVVM.*</item>
|
||||
</string-array>
|
||||
<!-- This config is holding calling number conversion map - expected to convert to emergency
|
||||
number. Formats for this config as below:
|
||||
<item>[dialstring1],[dialstring2],[dialstring3]:[replacement]</item>
|
||||
|
||||
E.g. for Taiwan Type Approval, 110 and 119 should be converted to 112.
|
||||
<item>110,119:112</item>
|
||||
-->
|
||||
<string-array translatable="false" name="config_convert_to_emergency_number_map" />
|
||||
</resources>
|
||||
|
||||
@@ -2708,4 +2708,5 @@
|
||||
|
||||
<java-symbol type="drawable" name="ic_restart" />
|
||||
|
||||
<java-symbol type="array" name="config_convert_to_emergency_number_map" />
|
||||
</resources>
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.android.i18n.phonenumbers.ShortNumberUtil;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.database.Cursor;
|
||||
import android.location.CountryDetector;
|
||||
import android.net.Uri;
|
||||
@@ -3021,4 +3022,79 @@ public class PhoneNumberUtils
|
||||
return SubscriptionManager.getDefaultVoiceSubscriptionId();
|
||||
}
|
||||
//==== End of utility methods used only in compareStrictly() =====
|
||||
|
||||
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* @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)) {
|
||||
return number;
|
||||
}
|
||||
|
||||
String normalizedNumber = normalizeNumber(number);
|
||||
|
||||
// The number is already emergency number. Skip conversion.
|
||||
if (isEmergencyNumber(normalizedNumber)) {
|
||||
return number;
|
||||
}
|
||||
|
||||
for (String convertMap : CONVERT_TO_EMERGENCY_MAP) {
|
||||
if (DBG) log("convertToEmergencyNumber: " + convertMap);
|
||||
String[] entry = null;
|
||||
String[] filterNumbers = null;
|
||||
String convertedNumber = null;
|
||||
if (!TextUtils.isEmpty(convertMap)) {
|
||||
entry = convertMap.split(":");
|
||||
}
|
||||
if (entry != null && entry.length == 2) {
|
||||
convertedNumber = entry[1];
|
||||
if (!TextUtils.isEmpty(entry[0])) {
|
||||
filterNumbers = entry[0].split(",");
|
||||
}
|
||||
}
|
||||
// Skip if the format of entry is invalid
|
||||
if (TextUtils.isEmpty(convertedNumber) || filterNumbers == null
|
||||
|| filterNumbers.length == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (String filterNumber : filterNumbers) {
|
||||
if (DBG) log("convertToEmergencyNumber: filterNumber = " + filterNumber
|
||||
+ ", convertedNumber = " + convertedNumber);
|
||||
if (!TextUtils.isEmpty(filterNumber) && filterNumber.equals(normalizedNumber)) {
|
||||
if (DBG) log("convertToEmergencyNumber: Matched. Successfully converted to: "
|
||||
+ convertedNumber);
|
||||
return convertedNumber;
|
||||
}
|
||||
}
|
||||
}
|
||||
return number;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user