android - valores - ¿Cómo formatear un número de teléfono usando PhoneNumberUtils?
restaurar valores de fabrica android samsung (5)
¿Cómo puedo formatear un número de teléfono usando PhoneNumberUtils ?
Ej .: 1234567890
→ (123) 456-7890
En su forma más básica:
String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber);
Esto formateará automáticamente el número de acuerdo con las reglas del país de origen.
También puede formatear texto editable en el lugar usando:
PhoneNumberUtils.formatNumber(Editable text, int defaultFormattingType);
Echa un vistazo a PhoneNumberUtils
para más opciones.
Opté por usar la versión de google ( https://github.com/googlei18n/libphonenumber ) porque entonces el SDK mínimo puede ser menor (creo que no está en el SDK de Android hasta el 21).
El uso es algo como esto:
PhoneNumberUtil pnu = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber pn = pnu.parse("1234567890", "US");
String pnE164 = pnu.format(pn, PhoneNumberUtil.PhoneNumberFormat.E164);
En Android Studio es necesario agregar esto a las dependencias en build.gradle:
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
...
compile ''com.googlecode.libphonenumber:libphonenumber:7.2.2''
}
Parece que https://github.com/googlei18n/libphonenumber podría ser una mejor solución para hacer un formato personalizado en Android.
Documentos API: https://github.com/googlei18n/libphonenumber/blob/master/README.md
Solución independiente para el formato de número de teléfono sin formato, si no conoce su país y necesita asistencia en la pre-piruleta.
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)
}
}
formatNumber quedó en desuso en LOLLIPOP, después de eso necesita agregar la configuración regional como un argumento adicional.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return PhoneNumberUtils.formatNumber(yourStringPhone,Locale.getDefault().getCountry());
} else {
//Deprecated method
return PhoneNumberUtils.formatNumber(yourStringPhone);
}