usuario - validar email android studio
Validación de correo electrónico de Android en EditText (11)
Hola a todos, tengo un texto de edición y me gustaría escribir la validación de correo electrónico en mi Texto de edición. Este es un código XML
<EditText
android:id="@+id/mail"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_alignLeft="@+id/phone"
android:layout_below="@+id/phone"
android:layout_marginRight="33dp"
android:layout_marginTop="10dp"
android:background="@drawable/edit_background"
android:ems="10"
android:hint="E-Mail"
android:inputType="textEmailAddress"
android:paddingLeft="20dp"
android:textColor="#7e7e7e"
android:textColorHint="#7e7e7e" >
</EditText>
y este es un codigo java
emailInput = mail.getText().toString().trim();
emailPattern = "^[_A-Za-z0-9-]+(//.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(//.[A-Za-z0-9]+)*(//.[A-Za-z]{2,})$";
if (emailInput.matches(emailPattern)) {
Toast.makeText(getActivity(), "valid email address",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Invalid email address",
Toast.LENGTH_SHORT).show();
mail.setBackgroundResource(R.drawable.edit_red_line);
}
No puedo validar. El mensaje de brindis es siempre "Dirección de correo electrónico no válida". ¿Qué estoy haciendo mal? si alguien sabe solución por favor ayúdame
¿Por qué no usar:
public final static boolean isValidEmail(CharSequence target) {
return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
Como se sugiere here .
Aquí hay un código completo para validaciones de inicio de sesión ......
public class LoginActivity extends AppCompatActivity {
private static final String TAG = "LoginActivity";
private static final int REQUEST_SIGNUP = 0;
@Bind(R.id.input_email) EditText _emailText;
@Bind(R.id.input_password) EditText _passwordText;
@Bind(R.id.btn_login) Button _loginButton;
@Bind(R.id.link_signup) TextView _signupLink;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
_loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
login();
}
});
_signupLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Start the Signup activity
Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
startActivityForResult(intent, REQUEST_SIGNUP);
finish();
overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
}
});
}
public void login() {
Log.d(TAG, "Login");
if (!validate()) {
onLoginFailed();
return;
}
_loginButton.setEnabled(false);
final ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this,
R.style.AppTheme_Dark_Dialog);
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Authenticating...");
progressDialog.show();
String email = _emailText.getText().toString();
String password = _passwordText.getText().toString();
// TODO: Implement your own authentication logic here.
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
// On complete call either onLoginSuccess or onLoginFailed
onLoginSuccess();
// onLoginFailed();
progressDialog.dismiss();
}
}, 3000);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SIGNUP) {
if (resultCode == RESULT_OK) {
// TODO: Implement successful signup logic here
// By default we just finish the Activity and log them in automatically
this.finish();
}
}
}
@Override
public void onBackPressed() {
// Disable going back to the MainActivity
moveTaskToBack(true);
}
public void onLoginSuccess() {
_loginButton.setEnabled(true);
finish();
}
public void onLoginFailed() {
Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show();
_loginButton.setEnabled(true);
}
public boolean validate() {
boolean valid = true;
String email = _emailText.getText().toString();
String password = _passwordText.getText().toString();
if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
_emailText.setError("enter a valid email address");
valid = false;
} else {
_emailText.setError(null);
}
if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
_passwordText.setError("between 4 and 10 alphanumeric characters");
valid = false;
} else {
_passwordText.setError(null);
}
return valid;
}
}
Asigne una variable de cadena para almacenar el valor de este EditText:
emailInput = mail.getText().toString().trim();
Use setError en su EditText:
if(!isValidEmail(emailInput)){
mail.setError("Invalid"); /*"Invalid Text" or something like getString(R.string.Invalid)*/
mail.requestFocus();
}
Crea un método para revisar el correo electrónico:
private boolean isValidEmail(String emailInput) {
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 = Pattern.compile(EMAIL_PATTERN);
Matcher matcher = pattern.matcher(emailInput);
return matcher.matches();
}
Estoy publicando una respuesta muy simple y fácil de validación de correo electrónico sin utilizar ningún patrón de cadena
1.Configurar el botón de escucha en el botón ....
button_resetPassword.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
CharSequence temp_emilID=username.getText().toString();//here username is the your edittext object...
if(!isValidEmail(temp_emilID))
{
username.requestFocus();
username.setError("Enter Correct Mail_ID ..!!");
or
Toast.makeText(getApplicationContext(), "Enter Correct Mail_ID", Toast.LENGTH_SHORT).show();
}
else
{
correctMail..
//Your action...
}
});
2. llame al isValidEmail () es decir.
public final static boolean isValidEmail(CharSequence target)
{
if (TextUtils.isEmpty(target))
{
return false;
} else {
return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
}
Espero que te sea de utilidad ...
Intenta seguir el código:
public final static boolean isValidEmail(CharSequence target) {
return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
Esto funciona bien.
Pruebe el siguiente código:
Simplemente llame al siguiente método como,
if(emailValidator(mail.getText().toString())){
Toast.makeText(getActivity(), "valid email address",
Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getActivity(), "invalid email address",
Toast.LENGTH_SHORT).show();
}
public static boolean emailValidator(final String mailAddress) {
Pattern pattern;
Matcher matcher;
final 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(mailAddress);
return matcher.matches();
}
Tuve una consulta en el patrón de correo electrónico para más de una validación de ID de correo electrónico y solo para una ID de correo electrónico. Lo resolví utilizando:
public static final String patter_emails="^(//s*,?//s*[0-9a-za-z]([-.//w]*[0-9a-za-z])*@([0-9a-za-z][-//w]*[0-9a-za-z]//.)+[a-za-z]{2,9})+//s*$";
public static final String patter_email="^(//s*[0-9a-za-z]([-.//w]*[0-9a-za-z])*@([0-9a-za-z][-//w]*[0-9a-za-z]//.)+[a-za-z]{2,9})+//s*$";
Estos anteriores se utilizan para el patrón en Java y Android tanto.
verifica esto usando:
Utilice esta función para validar la identificación del correo electrónico:
private boolean validateEmaillId(String emailId){
return Pattern.compile("^(([//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})$").matcher(emailId).matches();
}
Validación de correo electrónico de Android de la manera más sencilla
String validemail= "[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}" +
")+";
String emal=email.getText().toString();
Matcher matcherObj = Pattern.compile(validemail).matcher(emal);
if (matcherObj.matches()) {
Toast.makeText(getApplicationContext(), "enter
all details", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getApplicationContext(),"please enter
valid email",Toast.LENGTH_SHORT).show();
}
private void isValidEmail(String email_id) {
if (email_id == null){
checkTextView.setVisibility(View.VISIBLE);
checkTextView.setText(LocaleController.getString("EnterValidEmail", R.string.EnterValidEmail));
return;
}
if (android.util.Patterns.EMAIL_ADDRESS.matcher(email_id).matches()) {
checkTextView.setVisibility(View.GONE);
} else {
checkTextView.setVisibility(View.VISIBLE);
checkTextView.setText(LocaleController.getString("EnterValidEmail", R.string.EnterValidEmail));
}
Tome un textView ex.checkTextView y valide cuando el correo electrónico es válido; luego, la vista de texto desaparece; de lo contrario, mostrará el mensaje.
android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches()