Algunos desarrolladores de aplicaciones prefieren mantener al usuario dentro de la aplicación en la medida de lo posible, incluso cuando visita enlaces externos. WebView incrusta el contenido web externo sin problemas en una actividad de la aplicación para que parezca parte de ella. Sin embargo, los contenidos grandes, como las páginas web completas, que no caben en el diseño de la aplicación, requieren un navegador mínimo para mostrarlos. Algunas aplicaciones tienen su propio navegadores in-app . Una adición relativamente reciente es la capacidad de los navegadores independientes (incluidos Chrome y Firefox) de mostrar Pestañas personalizadas dentro de otras aplicaciones del mismo modo que un navegador in-app.
Cuando se toca un enlace, la aplicación puede disparar un intent.action.VIEW
al navegador web o una intención implícita con la URL como dato. En este último caso, si hay más de una aplicación que pueda manejar el esquema dado en la URL (por ejemplo https://
) y no se ha seleccionado todavía una aplicación por defecto, la resolución de la actividad del sistema ( com.android.internal.app.ResolverActivity
) muestra Abrir con (con la ayuda del gestor de paquetes que muestra la última aplicación seleccionada en la parte superior (ver más detalles en esta respuesta ):
A continuación, se envía una intención explícita a la aplicación seleccionada por el usuario. Así, si se selecciona un navegador (u otra aplicación) que no proporciona la funcionalidad de pestañas personalizadas, se lanza el navegador completo. Pero si la intención es una CustomTabsIntent
(con EXTRA) y la aplicación seleccionada (por ejemplo, el navegador) es compatible con las pestañas personalizadas, la URL se abre dentro de la aplicación que llama. El navegador puede iniciar un CustomTabsService
en segundo plano para recibir intentos con ACTION_CUSTOM_TABS_CONNECTION
:
~$ dumpsys package | grep CustomTabsService
android.support.customtabs.action.CustomTabsService:
b5a09c8 org.mozilla.firefox/org.mozilla.gecko.customtabs.GeckoCustomTabsService
Firefox, al menos, ofrece una opción en la configuración para desactivar las pestañas personalizadas:
Del mismo modo, algunas aplicaciones pueden ofrecer una opción de configuración para abrir los enlaces de forma externa, desactivando el navegador de la aplicación y/o las pestañas personalizadas. O puedes personalizar el comportamiento de las pestañas personalizadas utilizando aplicaciones de terceros como Lynket - un proyecto de código abierto (no tengo ninguna afiliación). En teoría, el mismo enfoque puede utilizarse para desactivar las pestañas personalizadas seleccionando dicha aplicación cuando "Abrir con" se muestra el diálogo.