Empêcher les applications d'ouvrir des liens dans les onglets personnalisés de Chrome (c'est-à-dire d'ouvrir directement dans le navigateur par défaut)

20

Il n'y a pas longtemps, Google a ajouté une nouvelle fonctionnalité appelée Chrome Custom Tabs depuis Chrome 45 sur Android JellyBean ou version ultérieure.

Que sont les onglets personnalisés de Chrome?

Les développeurs d'applications ont le choix lorsqu'un utilisateur appuie sur une URL pour lancer un navigateur ou créer leur propre navigateur intégré à l'application à l'aide de WebViews.

Les deux options présentent des défis - le lancement du navigateur est un changement de contexte lourd qui n'est pas personnalisable, tandis que WebViews ne partage pas l'état avec le navigateur et n'ajoute pas de surcharge de maintenance.

Les onglets personnalisés de Chrome permettent aux applications de mieux contrôler leur expérience Web et facilitent la transition entre le contenu natif et le contenu Web sans avoir à recourir à une WebView.

Quand sera-t-il disponible?

Depuis Chrome 45, Chrome Custom Tabs est désormais généralement disponible pour tous les utilisateurs de Chrome, sur toutes les versions Android prises en charge par Chrome (à partir de Jellybean).

démonstration des onglets personnalisés

Google a intégré cette fonctionnalité sur certaines de leurs applications (par exemple Google+ , Recherche Google ) et maintenant, les applications tierces peuvent également l'utiliser (par exemple Twitter , Stack Exchange ).

Alors que certaines applications fournissent un paramètre pour l'activer / le désactiver (par exemple, la recherche Google ), d'autres ne semblent pas être en mesure de le désactiver. Je sais que je peux toujours ouvrir le lien dans Chrome en appuyant sur le menu de débordement (3 points en haut à droite) et en sélectionnant Ouvrir dans Chrome . Cependant, il serait préférable de le désactiver sur des applications spécifiques.

Donc, ma question est: est-il possible de désactiver cette fonctionnalité, de préférence sur des applications sélectives ? (par désactiver, je veux dire ouvrir le lien directement dans le navigateur par défaut, ou inviter l'utilisateur à choisir un navigateur)

Remarque : je suis ouvert à toutes les suggestions, y compris les solutions racine, ou même à la désinstallation de Chrome dans le pire des cas. Cependant, des réponses plus pratiques sont préférées.

Andrew T.
la source

Réponses:

8

La page d'aide des onglets personnalisés indique:

Que se passe-t-il si l'utilisateur n'a pas installé une version récente de Chrome?

Les onglets personnalisés utilisent une ACTION_VIEWintention avec des extras clés pour personnaliser l'interface utilisateur. Cela signifie que par défaut la page s'ouvrira dans le navigateur du système ou le navigateur par défaut de l'utilisateur.

Si l'utilisateur a installé Chrome et qu'il s'agit du navigateur par défaut, il récupérera automatiquement l' EXTRASinterface utilisateur et la présentera. Il est également possible pour un autre navigateur d'utiliser les extras d'intention pour fournir une interface personnalisée similaire.

Cela signifie que si vous définissez un autre navigateur par défaut (cela peut être fait via Paramètres> Applications> menu Cog> Applications par défaut ), toute application essayant d'ouvrir un onglet personnalisé ouvrira le lien dans ce navigateur à la place.

Mise à jour: Cela signifie également qu'il est possible d'écrire une application "gestionnaire" qui se présente comme un navigateur (gère l' ACTION_VIEWintention), et à la réception de cette intention vérifie si elle a des onglets personnalisés EXTRAS, et selon une logique, ouvre un navigateur de votre choix utilisant une intention explicite (où le nom du package d'application souhaité est explicitement spécifié).

Mikhail Naganov
la source
Merci, le changement de navigateur par défaut a quelque peu fonctionné sur certaines applications (par exemple, l'application Stack Exchange), mais n'a pas fonctionné sur les autres (par exemple, Google Actualités et météo), je ne sais pas pour les raisons ... L'application gestionnaire est une idée intéressante et je vais essayer d'expérimenter si cela fonctionne avec une application d'automatisation!
Andrew T.
1
C'est parce que Nouvelles et météo (essayé v 2.3.3.) Spécifie le composant explicitement dans l'intention: START u0 {act=android.intent.action.VIEW dat=http://news.google.com/... flg=0x14002000 cmp=com.android.chrome/org.chromium.chrome.browser.ChromeTabbedActivity (has extras)} from uid 10041 on display 0. Mauvais style, mais vous ne pouvez rien y faire :(
Mikhail Naganov
2

J'utilise Android 7.1.1. Ouvrez l'application Google ou faites une recherche, cliquez sur le hamburger en haut à gauche et allez dans Paramètres.

Allez dans Comptes et confidentialité.

Désactivez «Ouvrir les pages Web dans l'application».

Cela semble désactiver les onglets personnalisés de Chrome.

Mike Cheel
la source
3
Cela désactive les onglets personnalisés dans l'application de recherche uniquement (éventuellement d'autres applications Google), mais pas à l'échelle du système.
Keith Twombley