OSDN Git Service

Do not format numbers starting with hash or star.
authorFlavio Lerda <flerda@google.com>
Mon, 26 Sep 2011 17:40:37 +0000 (18:40 +0100)
committerFlavio Lerda <flerda@google.com>
Tue, 27 Sep 2011 12:53:23 +0000 (13:53 +0100)
If the user asks to format a number that starts with either a hash or a
star symbol, do not further format the phone number since we are not
actually able to parse such a number correctly and current this results
in the star or hash being dropped.

Bug: 5362177
Change-Id: Iff8d317c087d0ca07f2b107459ce8c47882ef367

telephony/java/android/telephony/PhoneNumberUtils.java
telephony/tests/telephonytests/src/com/android/internal/telephony/PhoneNumberUtilsTest.java

index ea349bf..34f8848 100644 (file)
@@ -1409,6 +1409,11 @@ public class PhoneNumberUtils
      * @hide
      */
     public static String formatNumber(String phoneNumber, String defaultCountryIso) {
+        // Do not attempt to format numbers that start with a hash or star symbol.
+        if (phoneNumber.startsWith("#") || phoneNumber.startsWith("*")) {
+            return phoneNumber;
+        }
+
         PhoneNumberUtil util = PhoneNumberUtil.getInstance();
         String result = null;
         try {
index 849ff48..e2349af 100644 (file)
@@ -513,7 +513,19 @@ public class PhoneNumberUtilsTest extends AndroidTestCase {
         assertEquals("(650) 291-0000", PhoneNumberUtils.formatNumber("650 2910000", "US"));
         assertEquals("123-4567", PhoneNumberUtils.formatNumber("1234567", "US"));
         assertEquals("(800) 466-4114", PhoneNumberUtils.formatNumber("800-GOOG-114", "US"));
+    }
 
+    @SmallTest
+    public void testFormatNumber_LeadingStarAndHash() {
+        // Numbers with a leading '*' or '#' should be left unchanged.
+        assertEquals("*650 2910000", PhoneNumberUtils.formatNumber("*650 2910000", "US"));
+        assertEquals("#650 2910000", PhoneNumberUtils.formatNumber("#650 2910000", "US"));
+        assertEquals("*#650 2910000", PhoneNumberUtils.formatNumber("*#650 2910000", "US"));
+        assertEquals("#*650 2910000", PhoneNumberUtils.formatNumber("#*650 2910000", "US"));
+        assertEquals("#650*2910000", PhoneNumberUtils.formatNumber("#650*2910000", "US"));
+        assertEquals("#650*2910000", PhoneNumberUtils.formatNumber("#650*2910000", "US"));
+        assertEquals("##650 2910000", PhoneNumberUtils.formatNumber("##650 2910000", "US"));
+        assertEquals("**650 2910000", PhoneNumberUtils.formatNumber("**650 2910000", "US"));
     }
 
     @SmallTest