OSDN Git Service

Emergency Number format
authorsqian <shuoq@google.com>
Fri, 15 Mar 2019 02:42:38 +0000 (19:42 -0700)
committersqian <shuoq@google.com>
Fri, 29 Mar 2019 02:04:35 +0000 (19:04 -0700)
Use PhoneNumberUtils#isDialable to check each character.

Bug: 123241078
Test: Treehugger
Change-Id: Icc9083ed4d6cdae22c3ede9433433ac8eeec4918
Merged-In: Icc9083ed4d6cdae22c3ede9433433ac8eeec4918
(cherry picked from commit 0197a96e8add2658d424d5d318b383281d702add)

telephony/java/android/telephony/TelephonyManager.java
telephony/java/android/telephony/emergency/EmergencyNumber.java

index 5e0a7a6..003c7c5 100644 (file)
@@ -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 {
index 397975f..dba2207 100644 (file)
@@ -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;
     }
 }