diff options
author | Shaopeng Jia <shaopengjia@google.com> | 2011-11-18 05:32:31 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-11-18 05:32:31 -0800 |
commit | e76b7f6260ca25d98f44f3bbac4415fa62ad2b00 (patch) | |
tree | eb567ab85c2c1467fa2bf03a8c5681674dd585bc /java/src/com | |
parent | f510a7b5e49fffa0ecab9258eeff85d40bb57964 (diff) | |
parent | 5cd062f9cba053c771bcea181fec210279ec030b (diff) | |
download | libphonenumber-e76b7f6260ca25d98f44f3bbac4415fa62ad2b00.tar.gz |
Merge "Tighten formatInOriginalFormat not to format numbers which we don't have formatting patterns, and use the raw_input instead."
Diffstat (limited to 'java/src/com')
-rw-r--r-- | java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java index 3f0138a9..4a435b87 100644 --- a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java +++ b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java @@ -1339,7 +1339,11 @@ public class PhoneNumberUtil { * @return the formatted phone number in its original number format */ public String formatInOriginalFormat(PhoneNumber number, String regionCallingFrom) { - if (number.hasRawInput() && !isValidNumber(number)) { + if (number.hasRawInput() && + (!hasFormattingPatternForNumber(number) || !isValidNumber(number))) { + // We check if we have the formatting pattern because without that, we might format the number + // as a group without national prefix. We also want to check the validity of the number + // because we don't want to risk formatting the number if we don't really understand it. return number.getRawInput(); } if (!number.hasCountryCodeSource()) { @@ -1358,6 +1362,18 @@ public class PhoneNumberUtil { } } + private boolean hasFormattingPatternForNumber(PhoneNumber number) { + String phoneNumberRegion = getRegionCodeForCountryCode(number.getCountryCode()); + PhoneMetadata metadata = getMetadataForRegion(phoneNumberRegion); + if (metadata == null) { + return false; + } + String nationalNumber = getNationalSignificantNumber(number); + NumberFormat formatRule = + chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber); + return formatRule != null; + } + /** * Formats a phone number for out-of-country dialing purposes. * |