programacion - cómo validar un nombre de URL/sitio web en EditText en Android?
manual de android en pdf (4)
Respuesta corta
Use el patrón WEB_URL en la clase de patrones
Patterns.WEB_URL.matcher(potentialUrl).matches()
Devolverá True si la URL es válida y falsa si la URL no es válida .
Respuesta larga
A partir de Android API nivel 8 hay un patrón de WEB_URL . Citando la fuente, "coincide con la mayor parte de RFC 3987". Si se dirige a un nivel de API más bajo, simplemente copie el patrón de la fuente e inclúyalo en su aplicación. Supongo que sabes cómo usar patrones y combinaciones, así que no entraré en más detalles aquí.
Además, la clase URLUtil proporciona algunos métodos útiles, por ejemplo:
Las descripciones de los métodos no son muy elaboradas, por lo tanto, probablemente sea mejor que busque la fuente y descubra cuál se ajusta mejor a su propósito.
En cuanto a cuándo activar la verificación de validación, hay múltiples posibilidades: puede usar las funciones de devolución de llamada EditText
o use un TextWatcher , que creo que sería mejor.
NO USE URLUtil para validar la URL de la siguiente manera.
URLUtil.isValidUrl(url)
porque da cadenas como "http: //" como URL válida que no es verdadera
Quiero tomar una entrada, una URL o simplemente un nombre de sitio web como, www.google.com de EditText en Android y en el usuario, haga clic en el botón para enviar o cuando EditText pierda el foco, la URL debe validarse, como en el formato "www.anyURL.com" ...
¿Cómo puedo hacer esto? ¿Hay alguna funcionalidad incorporada disponible en Android?
O podrías usar el viejo Regex
Pattern urlRegex = Pattern.compile("((([A-Za-z]{3,9}:(?:////)?)(?:[-;:&=/+/$,/w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:www.|[-;:&=/+/$,/w]+@)[A-Za-z0-9.-]+)((?://[/+~%//./w-_]*)?/??(?:[-/+=&;%@./w_]*)#?(?:[/w]*))?)");
No digo que Patterns.WEB_URL
sea malo, simplemente hace que sea más fácil probar qué coincide y qué no.
isValidUrl() funcionará desde que existe desde el nivel 1 de la API.
/**
* 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();
}