Mientras pruebas tu nueva aplicación Android, seguramente quieras probar su WebView. Sin embargo, es posible que notes un error que impide que una página del navegador se renderice dentro de la aplicación. Esto puede afectar negativamente a la Experiencia de Usuario (UX) de tu aplicación.
Afortunadamente, puedes solucionar fácilmente el error ERR_UNKNOWN_URL_SCHEME. En el front end, puede que tengas que desactivar las extensiones de Chrome o simplemente borrar la caché. Como alternativa, los desarrolladores pueden desactivar las URLs no estándar en la programación de la aplicación.
En este post, explicaremos qué es el error ERR_UNKNOWN_URL_SCHEME y cuáles son sus causas. A continuación, te mostraremos cómo solucionarlo tanto en el front end como en el back end. ¡Empecemos ya!
¿Qué Es el Error ERR_UNKNOWN_URL_SCHEME?
Para entender el error ERR_UNKNOWN_URL_SCHEME, hablemos primero de las aplicaciones nativas. En pocas palabras, una aplicación nativa se instala en un dispositivo móvil y está diseñada para un sistema operativo concreto.
Puedes encontrar aplicaciones nativas en la App Store o en Google Play Store:
Actualmente, Android controla el 72% del mercado de sistemas operativos móviles. Por esta razón, es posible que quieras desarrollar tu aplicación nativa para Google Play Store. Para ello, utilizarás Android Studio, que es el Entorno de Desarrollo Integrado (IDE) de Android:
Mientras desarrollas tu aplicación, es importante permitir a los usuarios ver el contenido incrustado del navegador web. Si los usuarios no tienen que ir y venir del navegador a la aplicación, la experiencia de usuario será más consistente.
Para añadir esta función a tu aplicación, utilizarás WebView. Esta clase especial muestra páginas web directamente desde una aplicación nativa. Aunque el navegador no tendrá funciones extensas como una barra de búsqueda o controles de navegación, WebView mostrará correctamente una página web.
Sin embargo, tu aplicación nativa también podría producir un error ERR_UNKNOWN_URL_SCHEME. En este caso, el sitio web solicitado tiene un esquema de URL que el dispositivo móvil no puede reconocer.
El ERR_UNKNOWN_URL_SCHEME suele ser un error de Chromium. Ha sido un problema importante desde Chrome 40. Sin embargo, puede tener diferentes causas.
¿Qué Causa el Error ERR_UNKOWN_URL_SCHEME?
Aunque WebView puede ser útil en aplicaciones nativas, sólo está equipada para procesar unos pocos esquemas de URL diferentes. Un esquema de URL proporciona información sobre cómo debe interpretarse la URL.
Los esquemas de URL estándar son ‘https://’ y ‘http://’. Aquí tienes algunos esquemas de URL que pueden causar el ERR_UNKNOWN_URL_SCHEME:
- mailto://
- whatsapp://
- file://
- telnet://
- intent://
- market://
- app://
- mail://
- buy://
Si eres desarrollador de aplicaciones, tendrás que utilizar una programación de URL específica para evitar que estos esquemas de URL provoquen errores. De lo contrario, los usuarios no podrán utilizar WebView en tu aplicación nativa.
Alternativamente, puede producirse el error ERR_UNKNOWN_URL_SCHEME cuando un usuario intenta abrir una URL redirigida. También puedes ver este mensaje después de utilizar OAuth con una tarjeta personalizada de Chrome.
Cómo Solucionar el Error ERR_UNKOWN_URL_SCHEME (8 Métodos)
Para los desarrolladores, el error ERR_UNKNOWN_URL_SCHEME significa que la WebView de tu aplicación no está mostrando eficazmente las páginas del navegador web. Esto impedirá que los usuarios vean el contenido correcto.
Tanto si eres un desarrollador como un usuario front-end, hay algunas formas de solucionar el problema. ¡Aquí tienes ocho soluciones!
1. Desactiva las Extensiones de Chrome
Muchos errores de Chrome pueden resolverse solucionando los problemas de las extensiones del navegador. Para ello, dirígete a Más herramientas > Extensiones. También puedes buscar «chrome://extensions/»:
En esta página, verás una lista de las extensiones de Chrome que tienes instaladas. Primero, desactívalas todas utilizando el interruptor de la esquina inferior derecha:
A continuación, comprueba si el problema se ha resuelto. Si es así, sabrás que había un problema con una de las extensiones.
Para averiguar qué extensión estaba causando el error ERR_UNKNOWN_URL_SCHEME, reactívalas una a una. Después de activar una extensión, comprueba si el problema reaparece. Cuando lo haga, elimina esa extensión por completo.
2. Limpia la Caché y las Cookies de Chrome
Mientras navegas por Internet, tu navegador guardará los datos de los sitios web en la caché. Esto garantizará que tu segunda visita se procese mucho más rápido. Sin embargo, estos datos almacenados en caché pueden corromperse fácilmente.
Si la primera solución no ha resuelto el error ERR_UNKNOWN_URL_SCHEME, puede que necesites borrar la caché de tu navegador. En Google Chrome, ve a Más herramientas > Borrar Datos de Navegación:
A continuación, asegúrate de seleccionar Imágenes y archivos almacenados en caché. Si quieres, también puedes borrar el historial de navegación, las cookies y otros datos de sitios guardados:
Después, intenta volver a cargar la página a la que intentabas acceder. Si se visualiza sin errores, ¡has solucionado el problema!
3. Desactiva la Aceleración por Hardware
La aceleración por hardware se produce cuando un navegador utiliza el hardware de tu dispositivo para aumentar la eficiencia. En Google Chrome, la Unidad de Procesamiento Gráfico (GPU) de tu dispositivo empezará a procesar tareas con gráficos pesados, como los juegos o la reproducción de vídeos.
La mayoría de las veces, la aceleración por hardware permite a Chrome realizar tareas más complejas de las que su software puede soportar. Sin embargo, esta función también puede provocar retrasos, bloqueos e incluso cuelgues.
Por lo tanto, puede que quieras desactivar la aceleración por hardware. Primero, abre la página de Configuración de Chrome. A continuación, haz clic en la pestaña Sistema:
Por último, utiliza el conmutador para desactivar la aceleración por hardware. Se te pedirá que reinicies Chrome con esta nueva configuración.
4. Desactiva el Cortafuegos
Otro motivo del error ERR_UNKNOWN_URL_SCHEME es un cortafuegos mal configurado. Para comprobar si éste es el caso, puedes desactivar temporalmente el cortafuegos de tu dispositivo.
Para los usuarios de Mac, haz clic en el icono de la manzana. A continuación, selecciona Configuración del sistema:
En la lista de pestañas, pulsa Red. A continuación, busca la opción Cortafuegos y desactívala:
Si tienes un ordenador Windows, haz clic en Inicio y abre Configuración. A continuación, ve a Privacidad y Seguridad > Seguridad de Windows > Cortafuegos y protección de red:
Ahora tendrás que seleccionar Red de dominio, Red privada o Red pública. Una vez hecho esto, busca la configuración del Cortafuegos de Microsoft Defender y desactívala:
Aparecerá una ventana emergente de seguridad pidiéndote que confirmes tu elección. Pulsa Aceptar para guardar el cambio.
5. Crea un Nuevo Perfil de Usuario de Chrome
Si los métodos anteriores no han solucionado el error ERR_UNKNOWN_URL_SCHEME, puedes probar a crear un perfil de usuario de Chrome completamente nuevo. A continuación, comprueba si puedes visitar la página sin problemas.
Afortunadamente, Google Chrome facilita la personalización de los perfiles. En la esquina superior derecha, haz clic en tu foto de perfil. En la parte inferior de la ventana emergente, pulsa Añadir:
Esto te permitirá configurar un nuevo perfil. Puedes iniciar sesión con una cuenta de Chrome existente o pulsar Continuar sin una cuenta:
Antes de empezar a navegar, dale un nombre al perfil. Además, puedes personalizar la combinación de colores:
Después de esto, tendrás un nuevo perfil de Chrome independiente de tus otras cuentas. Mientras utilizas este perfil, intenta cargar la página web de destino. Si el problema persiste, es buena idea que te pongas en contacto con el desarrollador de la aplicación, que resolverá el problema por ti.
6. Abrir la URL en una Ventana Nueva
Hasta ahora, hemos explicado cómo los usuarios pueden resolver potencialmente el error ERR_UNKNOWN_URL_SCHEME en un navegador. Si eres desarrollador, necesitarás saber cómo solucionar este problema para que tu aplicación tenga una WebView sin errores.
Una solución fácil consiste en editar el código href de tu URL. Incluyendo un atributo target en el HTML de tu aplicación, podrás especificar cómo debe abrirse el navegador.
Por ejemplo, puedes añadir el código HTML target=»_blank». Esto abrirá la WebView en una nueva ventana. Aquí tienes un ejemplo:
<a href=»https://www.w3schools.com» target=»_blank»>Visita W3Schools</a>
Aunque ésta puede ser una solución eficaz a corto plazo, puede afectar negativamente a la Experiencia de Usuario (UX) de tu aplicación. En el desarrollo web, es una buena idea evitar abrir nuevas ventanas.
El fragmento de código anterior eliminará el botón Atrás, lo que podría confundir a los usuarios cuando quieran volver a la página anterior.
7. Añade una Nuevo Intent
Como desarrollador de Android, necesitarás utilizar intents. Esencialmente, un intent describe la acción que quieres que realice la aplicación. Si necesitas corregir un error de esquema de URL, podrías considerar incluir un intent para que el contenido se cargue en una app externa.
Por ejemplo, puedes querer que el esquema URL «maps://» abra la aplicación de mapas por defecto de un usuario. Por otro lado, «mailto://» puede abrir la aplicación de correo.
Para añadir un nuevo intent, utilizarás una sentencia IF. Esto indicará al dispositivo que abra esquemas especiales en una app externa relevante. Sin embargo, los esquemas de URL estándar como «https://» o «http://» se abrirán normalmente.
Así es como se vería esta intención en acción:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url == null || url.startsWith("http://") || url.startsWith("https://")) {
return false;
}
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
} catch (Exception e) {
Log.i(TAG, "shouldOverrideUrlLoading Exception:" + e);
return true;
}
}
Sin embargo, puedes añadir un intent personalizado para aplicaciones externas específicas. Si quieres enviar a los usuarios a su Whatsapp instalado, así es como podría cambiar la anulación de la URL:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(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() + " - Shared from webview ");
startActivity(whatsappIntent);
} catch (android.content.ActivityNotFoundException ex) {
String MakeShortText = "Whatsapp has not been installed";
Toast.makeText(WebactivityTab1.this, MakeShortText, Toast.LENGTH_SHORT).show();
}
};
};
Este código permitirá que tu app abra Whatsapp en el dispositivo de un usuario. Si no está instalado, aparecerá un mensaje que indicará a los usuarios que «Whatsapp no se ha instalado».
8. Desactiva los Esquemas de URL No Estándar
En lugar de utilizar intents, también puedes desactivar completamente los esquemas de URL no estándar. Esto evitará que utilices esquemas de URL distintos de «http://» y «https://».
A continuación te explicamos cómo implementarlo en HTML:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
if (url.startsWith("http") || url.startsWith("https")) {
return true;
}else {
webview.stopLoading();
webview.goBack();
Toast.makeText(MainActivity.this, "Error: Unknown link type", Toast.LENGTH_SHORT).show();
}
return false;
}
Si un usuario hace clic en un enlace que utiliza un esquema personalizado, aparecerá un mensaje que dirá «Error: Tipo de enlace desconocido». Como la WebView de tu aplicación no admite esquemas personalizados, puedes evitar por completo el error ERR_UNKNOWN_URL_SCHEME.
Resumen
Cuando la gente utilice tu aplicación nativa, querrá que los enlaces externos se abran dentro de la misma aplicación. Si el sitio web solicitado no tiene un esquema de URL conocido, el dispositivo móvil del usuario devolverá un error ERR_UNKNOWN_URL_SCHEME.
En el front end, puedes solucionar este problema en los navegadores Chrome desactivando la aceleración por hardware o creando un perfil de usuario completamente nuevo. Sin embargo, en la mayoría de los casos, el desarrollador de la aplicación tendrá que resolver este error. Como desarrollador, podrás solucionar el error ERR_UNKNOWN_URL_SCHEME añadiendo un nuevo intent o abriendo la URL en una nueva ventana.
Mientras desarrollas tu aplicación, necesitarás un alojamiento fiable y estable. Nuestro alojamiento de aplicaciones cuenta con 25 centros de datos y asistencia experta por chat 24 horas al día, 7 días a la semana, ¡para que puedas centrarte únicamente en el desarrollo!