如何检查电话号码在android中是否有效

EKN*_*EKN 1 java android

在我的应用程序的注册页面上,我有一个 OTP 检查。

我的问题是我想在发送 OTP 之前验证电话号码。

如何根据扩展名创建电话号码验证正则表达式(对于阿曼 +968,对于加拿大 +1)

我试过 PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber); 用于验证电话号码的api。但是 api 总是返回 true。

例如,我已将“0”传递给 API,但它返回 true。

有没有更好的选择来验证带有国家分机代码的电话号码?

EKN*_*EKN 6

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;
    }
Run Code Online (Sandbox Code Playgroud)

模型类 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

根据我的代码,如果 PhoneValidateResponse 方法的 isValid() 返回 true,则匹配给定的电话号码和国家/地区代码。