From 2613e0064b4a43b7de4205d5a6aaae64416972ed Mon Sep 17 00:00:00 2001 From: Flavio Lerda Date: Mon, 26 Sep 2011 18:40:37 +0100 Subject: [PATCH] Do not format numbers starting with hash or star. 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 --- .../java/android/telephony/PhoneNumberUtils.java | 5 +++++ .../internal/telephony/PhoneNumberUtilsTest.java | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java index ea349bf4b3573..34f88489ed6a1 100644 --- a/telephony/java/android/telephony/PhoneNumberUtils.java +++ b/telephony/java/android/telephony/PhoneNumberUtils.java @@ -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 { diff --git a/telephony/tests/telephonytests/src/com/android/internal/telephony/PhoneNumberUtilsTest.java b/telephony/tests/telephonytests/src/com/android/internal/telephony/PhoneNumberUtilsTest.java index 849ff48da9b1f..e2349afbf85e8 100644 --- a/telephony/tests/telephonytests/src/com/android/internal/telephony/PhoneNumberUtilsTest.java +++ b/telephony/tests/telephonytests/src/com/android/internal/telephony/PhoneNumberUtilsTest.java @@ -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