diff options
| author | 2019-03-14 19:42:38 -0700 | |
|---|---|---|
| committer | 2019-03-28 19:04:35 -0700 | |
| commit | 70d83725fc18dc73d762de9b4dc8e37dba6b27e6 (patch) | |
| tree | 2f83195544332481aeec03288aca12570afbb864 | |
| parent | 6c93e5378a754f1992aaf4bfd5d030c623dbc57b (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.java | 11 | ||||
| -rw-r--r-- | telephony/java/android/telephony/emergency/EmergencyNumber.java | 14 |
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; } } |