-
-
Notifications
You must be signed in to change notification settings - Fork 511
Closed
Labels
Description
The CountryCodePicker.getFullNumberWithPlus() method appends a '+' to the countryCode and carrierNumber from user input.
When a user is inputting a phone number including the national trunk prefix, for instance for French (+33) numbers the value '0610101010', the method getFullNumberWithPlus() returns +330610101010 instead of +33610101010.
The first '0' directly after the country code is only used for national calls. International calls with '+33' should remove it.
Hence, the getFullNumberWithPlus() method can return invalid phone numbers.
Here's an example of I expected the getFullNumberWithPlus() to work, using the embedded libphonenumber-android lib:
private fun getExpectedFullNumberWithPlus(context: Context): String {
val phoneUtil = PhoneNumberUtil.createInstance(context)
try {
val countryCode = countryCodePicker.selectedCountryCode
val defaultRegion = countryCodePicker.selectedCountryNameCode
var numberToParse = countryCodePicker.fullNumber
if (numberToParse.startsWith(countryCode)) {
numberToParse = numberToParse.substring(countryCode.length)
}
val phoneNumber = phoneUtil.parse(numberToParse, defaultRegion)
return "+${phoneNumber.countryCode}${phoneNumber.nationalNumber}"
} catch (e: NumberFormatException) {
Timber.e(e, "Error parsing number")
}
return countryCodePicker.fullNumberWithPlus
}