Android Email EditText Validación
Tengo esta definición de EditText:
<EditText android:layout_height="wrap_content" android:layout_width="fill_parent" android:inputType="textEmailAddress" android:id="@+id/EmailText"/>
Observe que el EditText tiene el tipo inputType definido con una especificación de dirección de correo electrónico. ¿Tiene Android algo incorporado para validar un tipo de entrada de dirección de correo electrónico, o todo esto tiene que hacerse manualmente? Me permite ingresar datos no válidos, así que tengo curiosidad en cuanto a su propósito.
- Error al inflar la clase android.support.v7.widget.CardView
- Mejor manera de incluir el código de depuración?
- ¿Cómo se comprueba si ya se ha cerrado una instancia de reino?
- Android Studio 1.2.2, construir con éxito, pero no apk en la construcción / salida?
- ¿Por qué mi fuente de SDK de Android no está completa?
Gracias.
- Resultado Libgdx y Google In-App-Purchase
- Lectura de archivos desde almacenamiento externo de Android SDK Emulator
- ObjectAnimator vs TranslateAnimation
- ¿Cómo puedo saber si mi contexto sigue siendo válido?
- ¿Cómo implementar la funcionalidad de la cámara con opciones adicionales (como Panorama)?
- GSON esperaba BEGIN_ARRAY pero era BEGIN_OBJECT
- Android: NullPointerException a pesar de @NonNull
- Uso de Android @Override
Aquí, al dar el tipo de entrada de correo electrónico que está configurando el teclado de tipo de correo electrónico significa "@" y "." La palabra clave se mostrará en el teclado.
La mejor solución es comparar el correo electrónico siguiendo la función
public boolean isEmailValid(String email) { String regExpn = "^(([\\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})$"; CharSequence inputStr = email; Pattern pattern = Pattern.compile(regExpn,Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(inputStr); if(matcher.matches()) return true; else return false; }
Si esta función devuelve true, entonces su dirección de correo electrónico es válida, de lo contrario no
Si utiliza API 8 o superior, puede utilizar la clase Patterns
disponibles para validar el correo electrónico. Código de muestra:
public final static boolean isValidEmail(CharSequence target) { if (target == null) return false; return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches(); }
Por casualidad si incluso está soportando un nivel API inferior a 8, entonces simplemente puede copiar el archivo Patterns.java
en su proyecto y hacer referencia a él. Puedes obtener el código fuente de Patterns.java
desde este enlace
Un poco mejores respuestas que puedes encontrar aquí y aquí (créditos a los autores originales)
boolean isEmailValid(CharSequence email) { return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); }
O la biblioteca de validación personalizada https://github.com/vekexasia/android-form-edittext comprobar el segundo enlace para obtener más detalles y vista previa (regexp, numérico, alpha, alphaNumeric, correo electrónico, creditCard, teléfono, domainName, ipAddress, webUrl)
Aclamaciones
El campo de Editext no validará su email solamente fijando su método de la entrada al tipo del email.
Debe validarlo usted mismo.
Android: ¿hay alguna buena solución para validar Editboxes?
Validación de correo electrónico android
- Android: ¿Cómo puedo detener una animación infinita aplicada en un ImageView?
- ¿Aparejos rizados en "nueva" expresión? (Por ejemplo, "new MyClass () {…}")