Reputation:
I want to fetch phone number X(XXX)XXX-XXX
in this format and when I Google I found PhoneNumberUtils.formatNumber()
but it gives the number in this format X-XXX-XXX-XXX
so how can I get the number in X(XXX)XXX-XXX
fromat.
Code
holder.tv_vehicle.setText("Phone #: " + PhoneNumberUtils.formatNumber(data.getUserPhone()));
Upvotes: 1
Views: 443
Reputation: 566
PhoneNumberUtils.formatNumber will return (XXX)XXX-XXX if you pass a local number and X-XXX-XXX-XXX for international number , in your case you have 2 solutions :
Remove the country code then parse the phone number
String phoneNumber = "+1-202-000-0000";
String code = result.substring(0,3);
String localNumber = result.replace(code,""); //202-555-0196
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Log.i("result",code.replace("-","") + PhoneNumberUtils.formatNumber(localNumber , "US"));
} else {
Log.i("result",code.replace("-","") + PhoneNumberUtils.formatNumber(localNumber));
}
Result : +1(202) 000-0000
private String getFormattedNumber(String phoneNumber) {
PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
Phonemetadata.NumberFormat numberFormat = new Phonemetadata.NumberFormat();
numberFormat.pattern = "(\\d{3})(\\d{3})(\\d{4})";
numberFormat.format = "($1) $2-$3";
List<Phonemetadata.NumberFormat> newNumberFormats = new ArrayList<>();
newNumberFormats.add(numberFormat);
Phonenumber.PhoneNumber phoneNumberPN = null;
try {
phoneNumberPN = phoneNumberUtil.parse(phoneNumber, Locale.US.getCountry());
phoneNumber = phoneNumberUtil.formatByPattern(phoneNumberPN, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL, newNumberFormats);
} catch (NumberParseException e) {
e.printStackTrace();
}
return phoneNumber;
}
getFormattedNumber("+12020000000");
Result : +1(202) 000-0000
Upvotes: 0
Reputation: 548
holder.tv_vehicle.setText("Phone #: " + PhoneNumberUtils.formatNumber(data.getUserPhone()).replaceFirst("-", "(").replaceFirst("-", ")"));
You can use replaceFirst() to insert ( then ) and convert it. I wrote a little bit of a bad code here that should work. If I was doing it in my own program, I would make it into a function that did this and returned the updated string.
Upvotes: -1