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
Try to use isGlobalPhoneNumber()
method of PhoneNumberUtils
to detect whether a number is valid phone number or not.
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