How to check edittext's text is email address or not?

AndroidAndroid EdittextEmail Validation

Android Problem Overview


how to check the text of edittext is email address or not without using javascript and regular expression? Here I used inputtype="textEmailAddress" this is working but no error message is display.

Android Solutions


Solution 1 - Android

On Android 2.2+ use this:

boolean isEmailValid(CharSequence email) {
   return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}

for example:

EditText emailid = (EditText) loginView.findViewById(R.id.login_email);
String getEmailId = emailid.getText().toString();

// Check if email id is valid or not
if (!isEmailValid(getEmailId)){
    new CustomToast().Show_Toast(getActivity(), loginView,
        "Your Email Id is Invalid.");
}

Solution 2 - Android

/**
 * method is used for checking valid email id format.
 * 
 * @param email
 * @return boolean true for valid false for invalid
 */
public static boolean isEmailValid(String email) {
    String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(email);
    return matcher.matches();
}

Pass your edit text string in this function .

for right email verification you need server side authentication


Note there is now a built-in method in Android, see answers below.

Solution 3 - Android

Please follow the following Steps

Step 1 :

<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"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_below="@+id/textView_email"
        android:layout_marginTop="40dp"
        android:hint="Email Adderess"
        android:inputType="textEmailAddress" />

    <TextView
        android:id="@+id/textView_email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:text="Email Validation Example" />

</RelativeLayout>

Step 2:

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;

Step 3:

public class MainActivity extends Activity {

private EditText email;

private String valid_email;

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);

	initilizeUI();
}

/**
 * This method is used to initialize UI Components
 */
private void initilizeUI() {
	// TODO Auto-generated method stub

	email = (EditText) findViewById(R.id.editText_email);

	email.addTextChangedListener(new TextWatcher() {

		@Override
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			// TODO Auto-generated method stub

		}

		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
			// TODO Auto-generated method stub

		}

		@Override
		public void afterTextChanged(Editable s) {
			// TODO Auto-generated method stub

			// TODO Auto-generated method stub
			Is_Valid_Email(email); // pass your EditText Obj here.
		}

		public void Is_Valid_Email(EditText edt) {
			if (edt.getText().toString() == null) {
				edt.setError("Invalid Email Address");
				valid_email = null;
			} else if (isEmailValid(edt.getText().toString()) == false) {
				edt.setError("Invalid Email Address");
				valid_email = null;
			} else {
				valid_email = edt.getText().toString();
			}
		}

		boolean isEmailValid(CharSequence email) {
			return android.util.Patterns.EMAIL_ADDRESS.matcher(email)
					.matches();
		} // end of TextWatcher (email)
	});

}

}

Solution 4 - Android

I wrote a library that extends EditText which supports natively some validation methods and is actually very flexible.

Current, as I write, natively supported (through xml attributes) validation methods are:

  1. regexp: for custom regexp
  2. numeric: for an only numeric field
  3. alpha: for an alpha only field
  4. alphaNumeric: guess what?
  5. email: checks that the field is a valid email
  6. creditCard: checks that the field contains a valid credit card using Luhn Algorithm
  7. phone: checks that the field contains a valid phone number
  8. domainName: checks that field contains a valid domain name ( always passes the test in API Level < 8 )
  9. ipAddress: checks that the field contains a valid ip address webUrl: checks that the field contains a valid url ( always passes the test in API Level < 8 )
  10. nocheck: It does not check anything. (Default)

You can check it out here: https://github.com/vekexasia/android-form-edittext

Hope you enjoy it :)

In the page I linked you'll be able to find also an example for email validation. I'll copy the relative snippet here:

<com.andreabaccega.widget.FormEditText
       style="@android:style/Widget.EditText"
       whatever:test="email"
       android:id="@+id/et_email"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:hint="@string/hint_email"
       android:inputType="textEmailAddress"
       />  

There is also a test app showcasing the library possibilities.

This is a screenshot of the app validating the email field.

email validation done thorugh xml+library

Solution 5 - Android

As mentioned in one of the answers you can use the Patterns class as below:

public final static boolean isValidEmail(CharSequence target) {
    if (target == null) 
        return false;
    
    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

By chance if you are even supporting API level less than 8, then you can simply copy the Patterns.java file into your project and reference it. You can get the source code for Patterns.java from this link

Solution 6 - Android

In your case you can use the android.util.Patterns package.

EditText email = (EditText)findViewById(R.id.user_email);

if(Patterns.EMAIL_ADDRESS.matcher(email.getText().toString()).matches())
    Toast.makeText(this, "Email is VALID.", Toast.LENGTH_SHORT).show();
else
    Toast.makeText(this, "Email is INVALID.", Toast.LENGTH_SHORT).show();

Solution 7 - Android

The following code should be useful to you.

String email;
check.setOnClickListener(new OnClickListener() {

				
				public void onClick(View arg0) {

					checkEmail(email);
					if (checkMail) {
						System.out.println("Valid mail Id");
					}
				}
			});

		}
	}

	public static boolean checkEmail(String email) {

		Pattern EMAIL_ADDRESS_PATTERN = Pattern
				.compile("[a-zA-Z0-9+._%-+]{1,256}" + "@"
						+ "[a-zA-Z0-9][a-zA-Z0-9-]{0,64}" + "(" + "."
						+ "[a-zA-Z0-9][a-zA-Z0-9-]{0,25}" + ")+");
		return EMAIL_ADDRESS_PATTERN.matcher(email).matches();
	}

Solution 8 - Android

For Email Address validation try this simple and easy code.

    String email = inputEmail.getText().toString().trim();

    if (!Patterns.EMAIL_ADDRESS.matcher(email).matches())
    {
        inputEmail.setError("Enter Valid Email Address");
        inputEmail.requestFocus();
    }

Solution 9 - Android

here email is your email-id.

  public boolean validateEmail(String email) {
    
    Pattern pattern;
    Matcher matcher;
    String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
    pattern = Pattern.compile(EMAIL_PATTERN);
    matcher = pattern.matcher(email);
    return matcher.matches();
    
    }

Solution 10 - Android

Apache Commons Validator can be used as mentioned in the other answers.

Step:1)Download the jar file from here

Step:2)Add it into your project libs

The import:

import org.apache.commons.validator.routines.EmailValidator;

The code:

String email = "[email protected]";
boolean valid = EmailValidator.getInstance().isValid(email);

and to allow local addresses::

boolean allowLocal = true;
boolean valid = EmailValidator.getInstance(allowLocal).isValid(email);

Solution 11 - Android

Try this:

public boolean isValidEmail(String email) {
    return (PatternsCompat.EMAIL_ADDRESS.matcher(email).matches());
}

Thanks!

Solution 12 - Android

A simple method

	private boolean isValidEmail(String email)
{
	String emailRegex ="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
	if(email.matches(emailRegex))
	{
		return true;
	}
	return false;
}

Solution 13 - Android

public static boolean isEmailValid(String email) {
	boolean isValid = false;

	String expression = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
			+ "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
			+ "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\."
			+ "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
			+ "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
			+ "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$";
	// "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
	CharSequence inputStr = email;

	Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
	Matcher matcher = pattern.matcher(inputStr);
	if (!matcher.matches()) {
		isValid = true;
	}
	return isValid;
}

Solution 14 - Android

   I Hope this code is beneficial for you

    public class Register extends Activity 
      {
       EditText FirstName, PhoneNo, EmailId,weight;
       Button Register;
       private static final Pattern EMAIL_PATTERN = Pattern
		.compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");

 
   private static final Pattern USERFIRSTNAME_PATTERN = Pattern
		.compile("[a-zA-Z0-9]{1,250}");
   private static final Pattern PHONE_PATTERN = Pattern
		.compile("[a-zA-Z0-9]{1,250}");
       @Override
   public void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.register);
	
	    
	    Register=(Button) findViewById(R.id.register);
	    
	    FirstName=(EditText)findViewById(R.id.person_firstname);
	  
            PhoneNo =(EditText)findViewById(R.id.phone_no);
            EmailId=(EditText)findViewById(R.id.email_id);
            weight=(EditText) findViewById(R.id.weight);
        
         Register.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				
				sFirstName= FirstName.getText().toString();
				 sPhoneNo= PhoneNo.getText().toString();
				sEmailId= EmailId.getText().toString();
				sweight= weight.getText().toString(); 
				 
				if(sFirstName.equals("")||sPhoneNo.equals("")||sEmailId.equals("")||sweight.equals(""))
				{
			     	if ((!CheckUsername(sFirstName))) 
				     {
			         Toast.makeText(Register.this, "FirstName can not be null",Toast.LENGTH_LONG).show();
				     }
				   else if ((!Checkphoneno(sPhoneNo)))
				       {
					Toast.makeText(Register.this, "ENTER VALID mobile no ",Toast.LENGTH_LONG).show();
					   }
			     	else if ((!CheckEmail(sEmailId)))
			           {
				      Toast.makeText(Register.this, "ENTER VALID EMAIL ID",Toast.LENGTH_LONG).show();
				       }
			     	else if ((!Checkweight(sweight)))
			          {
				    Toast.makeText(Register.this, "ENTER Weight in kg",Toast.LENGTH_LONG).show();
				      }
		       }
				 
			}
			    private boolean CheckEmail(String sEmailId) {

					return EMAIL_PATTERN.matcher(sEmailId).matches();
				}

				 

				private boolean CheckUsername(String sFirstName) {

					return USERFIRSTNAME_PATTERN.matcher(sFirstName).matches();
				}
				private boolean Checkphoneno(String sPhoneNo) {

					return PHONE_PATTERN.matcher(sPhoneNo).matches();
				}
				private boolean Checkweight(String sweight) {

					return Weight_PATTERN.matcher(sweight).matches();
				}
			   
			 
		});
         

Solution 15 - Android

for email validation try this.

public boolean checkemail(String email)
{
              
	Pattern pattern = Pattern.compile(".+@.+\\.[a-z]+");
	Matcher matcher = pattern.matcher(email);
	return matcher.matches();

}

Solution 16 - Android

You can check it by regular expression

    public boolean isValid(String strEmail)
    {
     	pattern = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
            matcher = pattern.matcher(strEmail);

        if (strEmail.isEmpty()) {
           return false;
        } else if (!matcher.matches()) {
            return false;
        }
        else
        {
		return true;
        }
     }

Solution 17 - Android

private boolean isValidEmailID(String email) {
    String PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
    Pattern pattern = Pattern.compile(PATTERN);
    Matcher matcher = pattern.matcher(email);
    return matcher.matches();
}

For more validation click here

Solution 18 - Android

With android.util.Patterns and Kotlin it's very simple. One line function which return Boolean value.

fun validateEmail(email: String) = Patterns.EMAIL_ADDRESS.matcher(email)

Solution 19 - Android

In Kotlin, an E-mail address you can validate by the simple method without writing a lot of code and bother yourself with a regular expression like "^[_A-Za-z0-9-\+]....".

Look how is simple:

 fun validateEmail(emailForValidation: String): Boolean{
    
            return Patterns.EMAIL_ADDRESS.matcher(emailForValidation).matches()
        }

After you write this method for e-mail validation you just need to input your e-mail which you want to validate. If validateEmail() method returns true e-mail is valid and if false then e-mail is not valid.

Here is example how you can use this method:

 val eMail: String = emailEditText.text.toString().trim()
 if (!validateEmail(eMail)){ //IF NOT TRUE
            Toast.makeText(context, "Please enter valid E-mail address", Toast.LENGTH_LONG).show()

            return //RETURNS BACK TO IF STATEMENT
        }

Solution 20 - Android

For Kotlin:

fun emailValidation(email: String?): Boolean {
    return Patterns.EMAIL_ADDRESS.matcher(email).matches()
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDipak KeshariyaView Question on Stackoverflow
Solution 1 - AndroidPointer NullView Answer on Stackoverflow
Solution 2 - AndroidAndyView Answer on Stackoverflow
Solution 3 - AndroidRashid AliView Answer on Stackoverflow
Solution 4 - AndroidAndrea BaccegaView Answer on Stackoverflow
Solution 5 - AndroidMahendra LiyaView Answer on Stackoverflow
Solution 6 - AndroidRahul HindochaView Answer on Stackoverflow
Solution 7 - AndroidParthiView Answer on Stackoverflow
Solution 8 - AndroidmufazmiView Answer on Stackoverflow
Solution 9 - AndroidkyogsView Answer on Stackoverflow
Solution 10 - AndroidKing of MassesView Answer on Stackoverflow
Solution 11 - AndroidAman GargView Answer on Stackoverflow
Solution 12 - AndroidJustin AloorView Answer on Stackoverflow
Solution 13 - AndroidGaurav MehtaView Answer on Stackoverflow
Solution 14 - Androiddhiraj kakranView Answer on Stackoverflow
Solution 15 - AndroidNiranj PatelView Answer on Stackoverflow
Solution 16 - AndroidGevaria PurvaView Answer on Stackoverflow
Solution 17 - AndroidShaktisinh JadejaView Answer on Stackoverflow
Solution 18 - AndroidArtem BotnevView Answer on Stackoverflow
Solution 19 - AndroidDezoView Answer on Stackoverflow
Solution 20 - AndroidGhayasView Answer on Stackoverflow