Comment formater un numéro de téléphone à l'aide de PhoneNumberUtils ?
Ex : 1234567890
(123) 456-7890
Comment formater un numéro de téléphone à l'aide de PhoneNumberUtils ?
Ex : 1234567890
(123) 456-7890
Dans sa forme la plus basique :
String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber);
Cela formatera automatiquement le numéro en fonction des règles du pays d'où provient le numéro.
Vous pouvez également formater du texte modifiable sur place en utilisant :
PhoneNumberUtils.formatNumber(Editable text, int defaultFormattingType);
Jetez un œil à PhoneNumberUtils
pour plus d'options.
J'ai choisi d'utiliser la version de google ( https://github.com/googlei18n/libphonenumber ) car le SDK minimum peut alors être inférieur (je pense que ce n'est pas dans le SDK Android avant 21).
L'utilisation est quelque chose comme ceci:
PhoneNumberUtil pnu = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber pn = pnu.parse("1234567890", "US");
String pnE164 = pnu.format(pn, PhoneNumberUtil.PhoneNumberFormat.E164);
Dans Android Studio, il faut ajouter ceci aux dépendances dans build.gradle :
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
compile 'com.googlecode.libphonenumber:libphonenumber:7.2.2'
}
formatNumber est devenu obsolète sur LOLLIPOP, après cela, vous devez ajouter la locale en tant qu'argument supplémentaire.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return PhoneNumberUtils.formatNumber(yourStringPhone,Locale.getDefault().getCountry());
} else {
//Deprecated method
return PhoneNumberUtils.formatNumber(yourStringPhone);
}
Il semble que cette bibliothèque de Google pourrait être une meilleure solution pour effectuer un formatage personnalisé dans Android.
Documentation API : https://github.com/googlei18n/libphonenumber/blob/master/README.md
Solution autonome pour le formatage du numéro de téléphone brut, si vous ne connaissez pas votre pays et avez besoin d'assistance sur la pré-lucette.
fun formatNumberCompat(rawPhone: String?, countryIso: String = ""): String {
if (rawPhone == null) return ""
var countryName = countryIso
if (countryName.isBlank()) {
countryName = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Resources.getSystem().configuration.locales[0].country
} else {
Resources.getSystem().configuration.locale.country
}
}
return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
PhoneNumberUtils.formatNumber(rawPhone)
} else {
PhoneNumberUtils.formatNumber(rawPhone, countryName)
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.