2017-05-26 54 views
0

中有效在我的應用程序的註冊頁面中,我有一個OTP檢查。如何檢查電話號碼是否在android

我的問題是我想在發送OTP之前驗證電話號碼。

如何可以根據擴展我創建電話號碼驗證的正則表達式(阿曼+968,加拿大+1)

我已經試過PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber的); api驗證電話號碼。但是api總是返回true。例如:我已經將「0」傳遞給api,但它返回true。

有沒有更好的選擇來驗證電話號碼與國家擴展代碼。

+0

使用'PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber);' –

+1

我建議你展示一些研究工作和你試圖達到你所要求的內容 – djdere

+0

https://developer.android.com/reference/android/telephony/PhoneNumberUtils .html – shash678

回答

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,則給定的電話號碼和國家代碼相匹配。