我有一个通用的电话号码验证功能,当前可以验证所有全局电话号码。我想对其进行更新,以便仅验证美国电话号码。但是,即使我将我的电话号码长度设置为10,当前也会出现问题,因为它恰好在10个字符处停止。我的用户可能会输入一个空格或(,例如:“(444)444 4444之类的东西,如果我将字符数限制为10,即使它是有效数字,也不会起作用。任何想法如何解决?这是我的功能:
public static boolean isValidPhoneNumber(String phoneNumber) {
return !TextUtils.isEmpty(phoneNumber) && android.util.Patterns.PHONE.matcher(phoneNumber).matches() && PhoneNumberUtils.;
}
答案 0 :(得分:1)
我认为最好的方法是使用https://github.com/MichaelRocks/libphonenumber-android。
您可以将其包含在您的项目中,如下所示:
repositories {
jcenter()
}
dependencies {
implementation 'io.michaelrocks:libphonenumber-android:8.10.7'
}
然后像这样使用它:
public void validateNumber(View view) {
PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.createInstance(this);
Phonenumber.PhoneNumber phoneNumber = null;
try {
phoneNumber = phoneNumberUtil.parse("(541) 754-3010"/*replace with your number*/, "US");
boolean isValid = phoneNumberUtil.isValidNumber(phoneNumber);
Toast.makeText(this, "" + isValid, Toast.LENGTH_SHORT).show();
} catch (NumberParseException e) {
e.printStackTrace();
}
}