Je veux prendre une entrée, une URL ou simplement un nom de site Web comme, www.google.com de EditText
in Android et sur l'utilisateur, cliquez sur le Button
à soumettre ou lorsque le EditText
perd le focus, l'URL doit être validée, comme au format "www.anyURL.com" ...
Comment puis-je faire ceci? Y a-t-il des fonctionnalités intégrées disponibles dans Android?
Utiliser le modèle WEB_URL dans la classe Patterns
Patterns.WEB_URL.matcher(potentialUrl).matches()
Il renverra Vrai si l'URL est valide et faux si l'URL n'est pas valide .
À partir de Android API level 8, il existe un modèle WEB_URL . Citant la source, il "correspond à [es] la plus grande partie de la RFC 3987". Si vous ciblez un niveau inférieur Au niveau de l'API, vous pouvez simplement copier le modèle à partir de la source et l'inclure dans votre application. Je suppose que vous savez comment utiliser les modèles et les matchers, donc je n'entre pas dans les détails ici.
La classe RLUtil fournit également quelques méthodes utiles, par exemple:
Les descriptions des méthodes ne sont pas très élaborées, il est donc préférable de regarder la source et de déterminer laquelle correspond le mieux à votre objectif.
Quant au moment de déclencher le contrôle de validation, il existe plusieurs possibilités: vous pouvez utiliser les fonctions de rappel EditText
ou utilisez un TextWatcher , ce qui, je pense, serait mieux.
N'UTILISEZ PAS URLUtil pour valider l'URL comme ci-dessous.
URLUtil.isValidUrl(url)
car il donne des chaînes comme "http: //" comme URL valide qui n'est pas vraie
/**
* This is used to check the given URL is valid or not.
* @param url
* @return true if url is valid, false otherwise.
*/
private boolean isValidUrl(String url) {
Pattern p = Patterns.WEB_URL;
Matcher m = p.matcher(url.toLowerCase());
return m.matches();
}
Utilisez cette expression régulière sur la validation de votre site Web
String WebUrl = "^((ftp|http|https):\\/\\/)?(www.)?(?!.*(ftp|http|https|www.))[a-zA-Z0-9_-]+(\\.[a-zA-Z]+)+((\\/)[\\w#]+)*(\\/\\w+\\?[a-zA-Z0-9_]+=\\w+(&[a-zA-Z0-9_]+=\\w+)*)?$";
//TODO for website validation
private boolean isValidate()
{
String website = txtWebsite.getText().toString().trim();
if (website.trim().length() > 0) {
if (!website.matches(WebUrl)) {
//validation msg
return false;
}
}
return true;
}
RLUtil.isValidUrl fonctionnera car il existe depuis le niveau 1 de l'API.