Te has encontrado alguna vez con el temido mensaje net::err_unknown_url_scheme al intentar abrir una página web desde una app o desde el navegador? Si trabajas con Android, desarrollas aplicaciones móviles, utilizas WebView o simplemente eres usuario y te has topado con este error, sabrás que puede ser un auténtico quebradero de cabeza tanto para usuarios como para desarrolladores.
Este artículo es una guía completísima y actual para entender a fondo qué significa el error ERR_UNKNOWN_URL_SCHEME, por qué aparece, en qué casos es frecuente, y sobre todo, cómo puedes solucionarlo paso a paso desde todos los ángulos posibles, ya seas usuario final, desarrollador o responsable de producto. Aquí encontrarás explicaciones claras, trucos probados, fragmentos de código y soluciones para todos los escenarios, recopilando y ampliando la información de las mejores fuentes especializadas.
¿Qué es el error ERR_UNKNOWN_URL_SCHEME?
El error net::err_unknown_url_scheme aparece cuando un navegador o una WebView (ese componente que permite mostrar páginas web dentro de una aplicación móvil, sobre todo en Android) intenta abrir una URL con un esquema que no reconoce, no soporta o no sabe manejar. Y si te preguntas qué es un esquema, te lo aclaro enseguida: es la parte del enlace que va antes de los dos puntos y las dos barras, como http://, https://, mailto: o tel:.
El error puede manifestarse en múltiples situaciones:
- En aplicaciones Android que usan WebView para mostrar contenido web embebido.
- Al abrir enlaces en el navegador que tienen esquemas personalizados (por ejemplo, enlaces para abrir WhatsApp, enviar emails, acceder a apps…)
- Cuando existe un error de redirección o un enlace mal construido.
- En integraciones con sistemas de autenticación OAuth, deep linking, etc.
El mensaje suele variar según el contexto, pero típicamente verás algo así como: Webpage not available. net::ERR_UNKNOWN_URL_SCHEME, o bien simplemente la página no carga y muestra ese código de error.
¿Para qué sirven los esquemas de URL?
Los esquemas de URL le indican al sistema cómo debe interpretar y manejar el enlace. Algunos ejemplos de esquemas habituales:
- http://, https://: Esquemas estándar para cargar páginas web.
- mailto:: Para abrir el cliente de correo y redactar un email.
- tel:: Para marcar un número de teléfono directamente.
- sms:: Para enviar un SMS.
- intent://: Muy usado en Android para deep linking o lanzar otras apps.
- market://: Abrir la ficha de una app en Google Play Store.
- whatsapp://, customscheme://, etc.: Esquemas personalizados por otras aplicaciones.
La mayoría de navegadores modernos y WebViews reconocen sólo unos pocos esquemas por defecto. Si intentas cargar un esquema raro o personalizado desde una WebView sin preparar nada más, ¡pum! Aparece el famoso error ERR_UNKNOWN_URL_SCHEME.
¿Por qué ocurre este error?
Las causas más habituales, recopiladas de los principales expertos y foros del sector, son:
- Uso de esquemas no soportados: WebView solo sabe manejar http:// y https:// de forma nativa. Si le lanzas un mailto:, intent:, whatsapp:, etc., no sabrá qué hacer.
- Redirecciones incorrectas: Algunos sistemas de login (OAuth), o redireccionamientos con enlaces mal formados, usan esquemas personalizados o no estándar, lo que provoca el error.
- Errores de escritura de la URL: Por ejemplo, si te equivocas y por error pones htttp://, https// (sin dos puntos), hhtps, etc.
- Extensiones del navegador o problemas de caché: En ocasiones, una extensión (plugin) de Chrome o datos corruptos en caché impiden manejar correctamente ciertas URLs, disparando el error.
- Firewall o antivirus bloqueando determinados enlaces: Configuraciones de seguridad demasiado estrictas pueden bloquear esquemas poco usuales.
- Problemas en la configuración interna de la app: Si eres desarrollador y no has sobreescrito el comportamiento de los enlaces, la WebView no podrá abrir nada salvo lo más básico.
Cuando el sistema (ya sea una app, una WebView o un navegador) no tiene instrucciones claras sobre qué hacer con un tipo de enlace, aparece este mensaje para evitar riesgos o comportamientos inesperados.
Cómo solucionar ERR_UNKNOWN_URL_SCHEME: Guía TOTAL para usuarios y desarrolladores
A continuación tienes todos los métodos probados para solucionar este error en diferentes situaciones, combinando pasos para el usuario final y para equipos de desarrollo. No dejes de leer hasta el final porque cada caso concreto puede requerir un enfoque diferente.
Soluciones para USUARIOS de aplicaciones y navegadores
1. Desactivar extensiones de Chrome
Las extensiones a veces interfieren con el procesamiento de ciertos enlaces. Para descartar que sea eso, sigue estos pasos:
- Abre Chrome y escribe en la barra de direcciones chrome://extensions/
- Deshabilita todas las extensiones (puedes hacerlo con el interruptor de cada una).
- Intenta cargar de nuevo la página o función que daba error.
- Si ya no aparece el error, reactiva las extensiones una a una hasta dar con la culpable. Cuando la identifiques, busca una actualización o elimínala.
2. Borra la caché y las cookies
Los datos corruptos en caché o cookies pueden provocar errores de visualización. Vacía estos datos así:
- Entra en Configuración > Privacidad y seguridad > Borrar datos de navegación.
- Elige Cookies y otros datos de sitios y Imágenes y archivos en caché.
- Pulsa en Borrar datos y recarga la página.
3. Desactiva la aceleración por hardware en Chrome
En ocasiones, esta función causa incompatibilidades gráficas que afectan a la carga de enlaces especiales:
- Ve a Configuración de Chrome.
- Desplázate a Sistema y desactiva la opción 'Usar aceleración por hardware cuando esté disponible'.
- Reinicia el navegador para aplicar los cambios.
4. Crear un perfil nuevo en Chrome
Los problemas localizados en el perfil de usuario pueden solucionarse creando uno nuevo:
- Pulsa sobre tu foto de perfil (arriba a la derecha) y selecciona + Añadir o Agregar.
- Sigue los pasos para crear un nuevo perfil, con o sin cuenta de Google.
- Abre la página problemática con este nuevo perfil y revisa si el error persiste.
5. Desactivar temporalmente el firewall o antivirus
Algunas configuraciones bloquean esquemas de URL poco comunes. Hazlo sólo mientras pruebas, nunca de forma permanente:
- En Windows: Sistema y Seguridad > Firewall de Windows Defender > Desactiva temporalmente las protecciones.
- En Mac: Preferencias del Sistema > Seguridad y privacidad > Firewall > Desactiva.
No olvides volver a activar la seguridad después, ¡nada de navegar desprotegido!
6. Prueba con otro navegador
Ciertos errores pueden estar restringidos a navegadores basados en Chromium. Prueba con Mozilla Firefox o Microsoft Edge si todo lo anterior falla.
Soluciones PARA DESARROLLADORES de apps Android/WebView
1. Detecta y maneja los esquemas no estándar
Por defecto, WebView de Android sólo sabe manejar http y https. Si tu app incluye enlaces para abrir email, teléfonos, WhatsApp, etc., debes interceptar estos esquemas y tratarlos con un Intent. Así lo puedes hacer:
Ejemplo para permitir sólo http, https, tel y mailto:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if( url.startsWith("http:") || url.startsWith("https:") ) {
return false; // Deja que la WebView lo gestione
}
// Para email y teléfono
if( url.startsWith("tel:") || url.startsWith("mailto:") ) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
// Otros esquemas personalizados, ¡decide caso a caso!
return true; // Lo gestionamos nosotros (o lo bloqueamos)
}
2. Añade Intents personalizados para esquemas concretos
Si necesitas que un enlace abra una app concreta, como WhatsApp:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("whatsapp://")) {
webview.stopLoading();
try {
Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
whatsappIntent.setType("text/plain");
whatsappIntent.setPackage("com.whatsapp");
whatsappIntent.putExtra(Intent.EXTRA_TEXT, webview.getUrl() + " - Compartido desde webview");
startActivity(whatsappIntent);
} catch (android.content.ActivityNotFoundException ex) {
String MakeShortText = "WhatsApp no está instalado";
Toast.makeText(this, MakeShortText, Toast.LENGTH_SHORT).show();
}
return true;
}
return false;
}
3. Forzar la apertura de enlaces externos en ventana nueva
Otra posibilidad es forzar que ciertos enlaces se abran fuera del WebView usando target="_blank" en HTML:
<a href="mailto:persona@ejemplo.com" target="_blank">Enviar email</a>
Esto puede servir como solución puntual, aunque puede afectar a la experiencia de usuario, ya que se pierde el botón de volver atrás y puede resultar confuso.
4. Restringir los esquemas permitidos
Si quieres cortar de raíz los errores, puedes restringir la WebView a cargar sólo http y https, bloqueando el resto y mostrando un mensaje:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("http") || url.startsWith("https")) {
view.loadUrl(url);
return true;
} else {
webview.stopLoading();
webview.goBack();
Toast.makeText(MainActivity.this, "Error: tipo de enlace no soportado", Toast.LENGTH_SHORT).show();
return false;
}
}
Así el usuario sabrá que el enlace no es válido, evitando caídas de la app o errores silenciosos.
5. Soluciones en escenarios especiales y debugging
En algunos casos muy concretos, como enlaces dentro de iframes hacia mailto: o tel:, la única solución viable es añadir el target="_blank". Igualmente, si el error se produce sólo en versiones antiguas de Chrome, revisa si hay actualizaciones pendientes tanto de la app como del sistema operativo.
Errores frecuentes y cómo identificarlos
Además de los motivos que ya hemos visto, ten cuidado con estos fallos típicos:
- Errores de escritura en el esquema de la URL: Por ejemplo, escribir https// en vez de https:// es suficiente para desencadenar el error.
- Enlaces que pasan por varios redireccionamientos, que pueden cambiar el esquema del enlace sin que te des cuenta.
- Configuraciones de seguridad (Content Security Policy) demasiado restrictivas, sobre todo en apps híbridas.
- Problemas conocidos en versiones concretas de Chrome (por ejemplo, a partir de la versión 40 se reportaron más casos de este error en WebView).
Buenas prácticas para evitar net::err_unknown_url_scheme
La clave para no tener este error es anticiparte y controlar siempre los esquemas de enlace que vas a manejar dentro de tu app o web. Aquí tienes unos cuantos consejos extra:
- Define y documenta todos los esquemas que tu app necesita soportar antes de lanzar a producción.
- Sobreescribe siempre el método shouldOverrideUrlLoading de la WebView para controlar tú cómo se gestionan los enlaces.
- Haz pruebas en diferentes navegadores y dispositivos para detectar posibles incompatibilidades.
- Informa siempre al usuario cuando un enlace no se pueda abrir, en vez de dejarlo sin feedback o con una pantalla en blanco.
- Si usas esquemas personalizados, asegúrate de que esos enlaces tienen siempre una ruta de escape o comportamiento alternativo si la app destino no está instalada.
- Documenta para el soporte técnico y para los usuarios finales qué enlaces están permitidos o no desde tu aplicación.
Preguntas frecuentes sobre ERR_UNKNOWN_URL_SCHEME
- ¿Puede una extensión de Chrome causar el error? Sí, especialmente aquellas que manipulan enlaces, controlan scripts o bloquean publicidad.
- ¿Cómo sé si es culpa de la caché? Si ya has probado todo y el error sólo ocurre en algunas páginas o tras actualizaciones, limpiar la caché suele ayudar.
- ¿El error solo pasa en Android? Es mucho más frecuente en Android debido al uso de WebView, pero también puede ocurrir en navegadores de escritorio/móviles si la URL es incorrecta.
- ¿Puedo desactivar sólo los esquemas no estándar? Sí, debes implementar el control explícitamente en tu código (ver ejemplos arriba).
Recomendaciones extra para desarrolladores y equipos técnicos
- Haz logging detallado de todos los enlaces que generan errores, así podrás localizarlos y corregirlos en futuras versiones.
- Usa siempre try/catch al crear Intents personalizados, para evitar que la app se caiga si el esquema es inválido o la app destino no está presente.
- Revisa los foros y los issues en GitHub de componentes como flutter_inappwebview por si hay bugs específicos en tu stack.
- Si usas frameworks híbridos (Flutter, React Native, Ionic...), revisa la documentación sobre deep linking y URL schemes.
Algunos casos especiales y ejemplos reales
En casos de apps que muestran listados de otras aplicaciones (por ejemplo, enlaces a otras apps en Google Play Store), puede ocurrir este error si el enlace utiliza un esquema del tipo market:// y no se gestiona correctamente desde el código. Lo mismo puede pasar en integraciones con apps de mensajería (whatsapp://), llamadas (tel:), etc. Así que, si tienes una sección ‘Más aplicaciones’ o ‘Contactar’, revisa que todos los enlaces estén soportados por el código y que dispongan de alternativa si no existe la app de destino.
Monitorización y mejora continua
No olvides que el error ERR_UNKNOWN_URL_SCHEME puede ocultar otros problemas de UX (enlaces rotos, redirecciones fallidas, apps que no están instaladas, etc.). Por ello, es recomendable implementar analítica o algún sistema de seguimiento para identificar comportamientos anómalos e ir mejorando la navegación dentro de tu app o proyecto web.
¿Qué hacer si lo has probado TODO y sigue sin funcionar?
Si después de seguir este super manual el error se resiste, normalmente el problema estará en una configuración específica muy concreta, una actualización pendiente o un bug no detectado. En ese caso:
- Actualiza Chrome, WebView y el sistema operativo a la última versión disponible.
- Consulta la documentación de Android WebView en developer.android.com.
- Pregunta en foros técnicos como StackOverflow (en español: es.stackoverflow.com) aportando toda la información posible (código, versiones, logs de error, etc.).
Recuerda: este no es un error sin solución, pero requiere analizar a fondo tanto el entorno del usuario como el propio código. Cuanto mejor documentes el caso, más fácil será dar con la solución exacta.
Después de recorrer en detalle causas, soluciones para usuarios y desarrolladores, ejemplos de código, errores habituales y consejos de prevención, ahora ya tienes todo lo necesario para dejar atrás el error net::err_unknown_url_scheme y ofrecer la mejor experiencia posible, tanto en tus propias apps como ayudando a otros usuarios. Si necesitas recursos extra o quieres profundizar, revisa la documentación de WebView en developer.android.com, mantente atento a los foros de desarrolladores y recuerda actualizar tanto tu navegador como la app a las versiones más recientes para evitar incompatibilidades.
Comentarios