39 votes

Android Email EditText Validation

J'ai cette définition d'EditText :

<EditText 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent"
     android:inputType="textEmailAddress" 
     android:id="@+id/EmailText"/>

Remarquez que l'EditText a le inputType défini avec une spécification d'adresse électronique. Est-ce qu'Android a quelque chose d'intégré pour valider un type d'entrée d'adresse électronique, ou est-ce que tout cela doit être fait manuellement ? Cela me permet de saisir des données invalides, je suis donc curieux de savoir à quoi cela sert.

Merci.

165voto

Mahendra Points 2298

Si vous utilisez l'API 8 ou une version plus récente, vous pouvez utiliser l'outil facilement disponible Patterns pour valider l'email. Exemple de code :

public final static boolean isValidEmail(CharSequence target) {
    if (target == null) 
        return false;

    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

Par chance, si vous supportez un niveau d'API inférieur à 8, vous pouvez simplement copier le code de l'API. Patterns.java dans votre projet et le référencer. Vous pouvez obtenir le code source de Patterns.java de ce lien

46voto

dilipkaklotar Points 955

Ici, en donnant le type d'entrée Email, vous définissez le clavier du type d'email, ce qui signifie que les mots clés "@" et "." s'afficheront sur le clavier.

la meilleure solution est de comparer l'email par la fonction suivante

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 cette fonction renvoie vrai alors votre adresse email est valide sinon non

18voto

Ewoks Points 3910

Un peu plus de réponses que vous pouvez trouver aquí y aquí (crédits aux auteurs originaux)

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

ou bibliothèque de validation personnalisée https://github.com/vekexasia/Android-form-edittext vérifier deuxième lien pour les détails et l'aperçu (regexp, numeric, alpha, alphaNumeric, email, creditCard, phone, domainName, ipAddress, webUrl)

Cheers

6voto

Lucifer Points 14471

Le champ Editext ne validera pas votre e-mail uniquement en définissant sa méthode d'entrée sur le type d'e-mail.

Vous devez le valider vous-même.

Android : existe-t-il de bonnes solutions pour valider les boîtes d'édition ?

validation des e-mails Android

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X