Validate Mobile number with the country code

前端 未结 2 1576
攒了一身酷
攒了一身酷 2020-12-22 00:49

I want to validate the mobile number user enters. I have two edit texts one for the code i.e. +91,0 etc and another for the phone number.

I have a question that how

相关标签:
2条回答
  • 2020-12-22 01:12

    Try to use isGlobalPhoneNumber() method of PhoneNumberUtils to detect whether a number is valid phone number or not.

    0 讨论(0)
  • 2020-12-22 01:15

    Try this Example...

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">
    
    <EditText
        android:id="@+id/edtCountryCode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="phone"
        android:hint="country_code"/>
    
    <EditText
        android:id="@+id/edtPhoneNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/edtCountryCode"
        android:inputType="phone"
        android:hint="phone_no"/>
    
    <TextView
        android:id="@+id/tvIsValidPhone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/edtPhoneNumber"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"/>
    
    <Button
        android:id="@+id/btnValidate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvIsValidPhone"
        android:text="validate"/>
    
     </RelativeLayout>
    

    MainActivity.java

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.text.TextUtils;
    import android.util.Patterns;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    import com.google.i18n.phonenumbers.NumberParseException;
    import com.google.i18n.phonenumbers.PhoneNumberUtil;
    import com.google.i18n.phonenumbers.Phonenumber;
    
    public class MainActivity extends AppCompatActivity {
    
    TextView tvIsValidPhone;
    EditText edtPhone;
    EditText edtCountryCode;
    Button btnValidate;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        tvIsValidPhone = (TextView) findViewById(R.id.tvIsValidPhone);
        edtCountryCode = (EditText) findViewById(R.id.edtCountryCode);
        edtPhone = (EditText) findViewById(R.id.edtPhoneNumber);
        btnValidate = (Button) findViewById(R.id.btnValidate);
        btnValidate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String countryCode = edtCountryCode.getText().toString().trim();
                String phoneNumber = edtPhone.getText().toString().trim();
                if(countryCode.length() > 0 && phoneNumber.length() > 0){
                    if(isValidPhoneNumber(phoneNumber)){
                        boolean status = validateUsing_libphonenumber(countryCode, phoneNumber);
                        if(status){
                            tvIsValidPhone.setText("Valid Phone Number (libphonenumber)");
                        } else {
                            tvIsValidPhone.setText("Invalid Phone Number (libphonenumber)");
                        }
                    }
                    else {
                        tvIsValidPhone.setText("Invalid Phone Number (isValidPhoneNumber)");
                    }
                } else {
                    Toast.makeText(getApplicationContext(), "Country Code and Phone Number is required", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
    
    private boolean isValidPhoneNumber(CharSequence phoneNumber) {
        if (!TextUtils.isEmpty(phoneNumber)) {
            return Patterns.PHONE.matcher(phoneNumber).matches();
        }
        return false;
    }
    
    private boolean validateUsing_libphonenumber(String countryCode, String phNumber) {
        PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
        String isoCode = phoneNumberUtil.getRegionCodeForCountryCode(Integer.parseInt(countryCode));
        Phonenumber.PhoneNumber phoneNumber = null;
        try {
            //phoneNumber = phoneNumberUtil.parse(phNumber, "IN");  //if you want to pass region code
            phoneNumber = phoneNumberUtil.parse(phNumber, isoCode);
        } catch (NumberParseException e) {
            System.err.println(e);
        }
    
        boolean isValid = phoneNumberUtil.isValidNumber(phoneNumber);
        if (isValid) {
            String internationalFormat = phoneNumberUtil.format(phoneNumber, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL);
            Toast.makeText(this, "Phone Number is Valid " + internationalFormat, Toast.LENGTH_LONG).show();
            return true;
        } else {
            Toast.makeText(this, "Phone Number is Invalid " + phoneNumber, Toast.LENGTH_LONG).show();
            return false;
        }
    }}
    

    Download jar file and add in libs folder from below link.. http://www.java2s.com/Code/Jar/l/Downloadlibphonenumber41jar.htm

    0 讨论(0)
提交回复
热议问题