如何在android中检查电话号码是不是有效
Posted
技术标签:
【中文标题】如何在android中检查电话号码是不是有效【英文标题】:How to check if phone number is valid in android如何在android中检查电话号码是否有效 【发布时间】:2017-10-27 02:13:13 【问题描述】:在我的应用程序的注册页面上,我进行了 OTP 检查。
我的问题是我想在发送 OTP 之前验证电话号码。
如何根据分机创建电话号码验证正则表达式(对于阿曼 +968,对于加拿大 +1)
我已经尝试过 PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber);用于验证电话号码的 API。但是 api 总是返回 true。
例如,我已将“0”传递给 API,但它返回 true。
有没有更好的选择来验证带有国家分机代码的电话号码?
【问题讨论】:
使用PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber);
我建议您展示一些研究工作以及您为实现您的要求所做的努力
developer.android.com/reference/android/telephony/…
@Shinil 我已经尝试过 PhoneNumberUtils.isGlobalPhoneNumber() 函数。但是,如果我传递任何数字,如“0”,则 api 将返回 true。这是不正确的
【参考方案1】:
PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber) 不是检查电话号码是否有效的正确方法。我找到了一个更好的解决方案,它对我有用。
首先我们需要在 gradle 文件中添加以下库。
库:com.googlecode.libphonenumber:libphonenumber:8.4.2
我们需要将手机号码和国家代码传递给下面的函数,如果手机号码有效,它将返回true。
public static PhoneValidateResponse isPhoneNumberValidate(String mobNumber, String countryCode)
PhoneValidateResponse phoneNumberValidate = new PhoneValidateResponse();
PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber phoneNumber = null;
boolean finalNumber = false;
PhoneNumberUtil.PhoneNumberType isMobile = null;
boolean isValid = false;
try
String isoCode = phoneNumberUtil.getRegionCodeForCountryCode(Integer.parseInt(countryCode));
phoneNumber = phoneNumberUtil.parse(mobNumber, isoCode);
isValid = phoneNumberUtil.isValidNumber(phoneNumber);
isMobile = phoneNumberUtil.getNumberType(phoneNumber);
phoneNumberValidate.setCode(String.valueOf(phoneNumber.getCountryCode()));
phoneNumberValidate.setPhone(String.valueOf(phoneNumber.getNationalNumber()));
phoneNumberValidate.setValid(false);
catch (NumberParseException e)
e.printStackTrace();
catch (NullPointerException e)
e.printStackTrace();
catch (NumberFormatException e)
e.printStackTrace();
if (isValid && (PhoneNumberUtil.PhoneNumberType.MOBILE == isMobile ||
PhoneNumberUtil.PhoneNumberType.FIXED_LINE_OR_MOBILE == isMobile))
finalNumber = true;
phoneNumberValidate.setValid(true);
return phoneNumberValidate;
模型类 PhoneValidateResponse。
public class PhoneValidateResponse
private String Phone;
private String Code;
private boolean isValid;
public String getPhone()
return Phone;
public void setPhone(String phone)
Phone = phone;
public String getCode()
return Code;
public void setCode(String code)
Code = code;
public boolean isValid()
return isValid;
public void setValid(boolean valid)
isValid = valid;
根据我的代码,如果 PhoneValidateResponse 方法的 isValid() 返回 true,则给定的电话号码和国家/地区代码匹配。
【讨论】:
我的项目中没有 PhoneNumberUtil 的导入选项。是否有任何图书馆问题或其他问题。期待您的回复。以上是关于如何在android中检查电话号码是不是有效的主要内容,如果未能解决你的问题,请参考以下文章
当用户点击第 11 个号码时,如何验证输入文本(在 html 中)是不是是有效的电话号码?
Android通过电话号码有效地获取联系人姓名以在ListView中显示
如何在 AWS Amplify for Flutter 中检查用户是不是已确认(电子邮件/电话验证)