summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author sqian <shuoq@google.com> 2019-03-14 19:42:38 -0700
committer sqian <shuoq@google.com> 2019-03-28 19:04:35 -0700
commit70d83725fc18dc73d762de9b4dc8e37dba6b27e6 (patch)
tree2f83195544332481aeec03288aca12570afbb864
parent6c93e5378a754f1992aaf4bfd5d030c623dbc57b (diff)
Emergency Number format
Use PhoneNumberUtils#isDialable to check each character. Bug: 123241078 Test: Treehugger Change-Id: Icc9083ed4d6cdae22c3ede9433433ac8eeec4918 Merged-In: Icc9083ed4d6cdae22c3ede9433433ac8eeec4918 (cherry picked from commit 0197a96e8add2658d424d5d318b383281d702add)
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java11
-rw-r--r--telephony/java/android/telephony/emergency/EmergencyNumber.java14
2 files changed, 20 insertions, 5 deletions
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 5e0a7a69854e..003c7c5a1640 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -10260,15 +10260,20 @@ public class TelephonyManager {
}
/**
- * Checks if the supplied number is an emergency number based on current locale, sim, default,
- * modem and network.
+ * Identifies if the supplied phone number is an emergency number that matches a known
+ * emergency number based on current locale, SIM card(s), Android database, modem, network,
+ * or defaults.
+ *
+ * <p>This method assumes that only dialable phone numbers are passed in; non-dialable
+ * numbers are not considered emergency numbers. A dialable phone number consists only
+ * of characters/digits identified by {@link PhoneNumberUtils#isDialable(char)}.
*
* <p>The subscriptions which the identification would be based on, are all the active
* subscriptions, no matter which subscription could be used to create TelephonyManager.
*
* @param number - the number to look up
* @return {@code true} if the given number is an emergency number based on current locale,
- * sim, modem and network; {@code false} otherwise.
+ * SIM card(s), Android database, modem, network or defaults; {@code false} otherwise.
*/
public boolean isEmergencyNumber(@NonNull String number) {
try {
diff --git a/telephony/java/android/telephony/emergency/EmergencyNumber.java b/telephony/java/android/telephony/emergency/EmergencyNumber.java
index 397975fe58cf..dba220718818 100644
--- a/telephony/java/android/telephony/emergency/EmergencyNumber.java
+++ b/telephony/java/android/telephony/emergency/EmergencyNumber.java
@@ -22,6 +22,7 @@ import android.hardware.radio.V1_4.EmergencyNumberSource;
import android.hardware.radio.V1_4.EmergencyServiceCategory;
import android.os.Parcel;
import android.os.Parcelable;
+import android.telephony.PhoneNumberUtils;
import android.telephony.Rlog;
import java.lang.annotation.Retention;
@@ -673,11 +674,20 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
}
/**
- * Validate Emergency Number address that only allows '0'-'9', '*', or '#'
+ * Validate Emergency Number address that only contains the dialable character
+ * {@link PhoneNumberUtils#isDialable(char)}
*
* @hide
*/
public static boolean validateEmergencyNumberAddress(String address) {
- return address.matches("[0-9*#]+");
+ if (address == null) {
+ return false;
+ }
+ for (char c : address.toCharArray()) {
+ if (!PhoneNumberUtils.isDialable(c)) {
+ return false;
+ }
+ }
+ return true;
}
}