android: how do I format number as phone with parentheses

If you know the country for which you want to do it, you can use Google’s open source library libphonenumber . Here is how you can format it:

String numberStr = "8885551234"
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
  PhoneNumber numberProto = phoneUtil.parse(numberStr, "US");
  //Since you know the country you can format it as follows:
  System.out.println(phoneUtil.format(numberProto, PhoneNumberFormat.NATIONAL));
} catch (NumberParseException e) {
  System.err.println("NumberParseException was thrown: " + e.toString());

If you don’t know the country then for numberStr use E.164 format phone number and in place of country code use null.

Don’t know if you found what you were looking for, but I ended up writing a little method that takes the length of a string (since the phone numbers I get come from a web service and can be a variety of formats). I believe it should work (so far all my test cases have been with the first two options — haven’t tested the other two yet).

public static String FormatStringAsPhoneNumber(String input) {
    String output;
    switch (input.length()) {
        case 7:
            output = String.format("%s-%s", input.substring(0,3), input.substring(3,7));
        case 10:
            output = String.format("(%s) %s-%s", input.substring(0,3), input.substring(3,6), input.substring(6,10));
        case 11:
            output = String.format("%s (%s) %s-%s", input.substring(0,1) ,input.substring(1,4), input.substring(4,7), input.substring(7,11));
        case 12:
            output = String.format("+%s (%s) %s-%s", input.substring(0,2) ,input.substring(2,5), input.substring(5,8), input.substring(8,12));
            return null;
    return output;

You simply use this and get you want :

new PhoneNumberFormattingTextWatcher()

or Have look at this url :

Leave a Comment