2

What is a well formed sms address?

I am doing this in my code:

if (StringUtils.isNotBlank(mPhone) && !PhoneNumberUtils.isWellFormedSmsAddress(mPhone)) {
    AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle(getString(R.string.cellphone_error));
    alertDialog.setMessage(getString(R.string.cellphone_error_hint));
    alertDialog.show();
    return;
}

However, I can't seem to input any set of numbers to activate this code. For some reason, everything seems to qualify as a well formed sms address. How does this error check work?

Should I just use isGlobalPhoneNumber instead?

Jason Axelrod
  • 7,155
  • 10
  • 50
  • 78

1 Answers1

1

Bottom line after looking at either one of those methods you probably want to use your own RegEx to validate a number such as those used here depending on your requirements.

Reason being is that PhoneNumberUtils.isWellFormedSmsAddress(...) extracts the network part of the passed in String using PhoneNumberUtils.extractNetworkPortion(...) and basically checks if that network portion has dialable digits.

Problem is PhoneNumberUtils.extractNetworkPortion(...) removes most non digits so +18fvg12 becomes +1812 and still passes.

PhoneNumberUtils.isGlobalPhoneNumber (...) appears a bit more useful and makes sure the phone number matches the RegEx [\+]?[0-9.-]+.

This still might not be desirable though as +-----598-- still passes as an example.

Community
  • 1
  • 1
George Mulligan
  • 11,813
  • 6
  • 37
  • 50