65 votes

Comment formater un numéro de téléphone à l'aide de PhoneNumberUtils ?

Comment formater un numéro de téléphone à l'aide de PhoneNumberUtils ?

Ex : 1234567890 (123) 456-7890

86voto

Sven Viking Points 1036

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.

29voto

sobelito Points 135

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'
}

25voto

Mauricio Sartori Points 936

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); 
}

8voto

Norman H Points 1298

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

1voto

whalemare Points 282

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.com

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.

Powered by:

X