2017-05-26 28 views
0

私のアプリケーションのサインアップページにOTPチェックがあります。電話番号がandroidで有効かどうかを確認する方法

私の問題は、OTPを送信する前に電話番号を検証したいのです。

は、どのように私は(、オマーン968カナダ+1のための)拡張に応じて電話番号の検証正規表現を作成することができます

私はPhoneNumberUtils.isGlobalPhoneNumber(にphoneNumber)を試してみました。電話番号を検証するためのapi。しかしAPIは常に真実を返します。

例:私はAPIに "0"を渡しましたが、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。私のコードを1として

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; 
    } 
} 

場合はisValid()PhoneValidateResponse方法の特定の電話番号と国コードが一致した後、trueを返します。

関連する問題