Verhindern, dass Apps Links in benutzerdefinierten Chrome-Registerkarten öffnen (dh direkt im Standardbrowser öffnen)

20

Vor kurzem hat Google auf Android JellyBean oder höher eine neue Funktion namens Chrome Custom Tabs seit Chrome 45 hinzugefügt.

Was sind benutzerdefinierte Chrome-Tabs?

App-Entwickler stehen vor der Wahl, wenn ein Benutzer auf eine URL tippt, um entweder einen Browser zu starten oder einen eigenen In-App-Browser mit WebViews zu erstellen.

Beide Optionen stellen eine Herausforderung dar. Das Starten des Browsers ist ein schwerer Kontextwechsel, der nicht anpassbar ist, während WebViews den Status nicht für den Browser freigeben und den Wartungsaufwand erhöhen.

Chrome Custom Tabs geben Apps mehr Kontrolle über ihre Web-Erfahrung und machen Übergänge zwischen nativen und Web-Inhalten nahtloser, ohne auf eine WebView zurückgreifen zu müssen.

Wann wird dies verfügbar sein?

Ab Chrome 45 stehen Chrome Custom Tabs nun generell allen Chrome-Nutzern in allen von Chrome unterstützten Android-Versionen (ab Jellybean) zur Verfügung.

Demonstration von benutzerdefinierten Registerkarten

Google hat diese Funktion in einige seiner Apps (z. B. Google+ , Google-Suche ) integriert, und jetzt können Apps von Drittanbietern sie auch verwenden (z. B. Twitter , Stack Exchange ).

Während einige Apps Einstellungen zum Aktivieren / Deaktivieren bereitstellen (z. B. die Google-Suche ), scheint es bei anderen nicht möglich zu sein, diese zu deaktivieren. Ich weiß, dass ich den Link in Chrome weiterhin öffnen kann, indem ich auf das Überlaufmenü (3 Punkte oben rechts) tippe und In Chrome öffnen auswähle . Es ist jedoch vorzuziehen, wenn es für bestimmte Apps deaktiviert werden kann.

Meine Frage lautet also: Ist es möglich, diese Funktion zu deaktivieren, vorzugsweise bei ausgewählten Apps ? (Mit Deaktivieren meine ich, den Link direkt im Standardbrowser zu öffnen oder den Benutzer zur Auswahl eines Browsers aufzufordern.)

Hinweis : Ich bin offen für alle Vorschläge, einschließlich Root-Lösungen oder sogar für die Deinstallation von Chrome im schlimmsten Fall. Praktischere Antworten werden jedoch bevorzugt.

Andrew T.
quelle

Antworten:

8

Auf der Hilfeseite für benutzerdefinierte Registerkarten wird Folgendes angezeigt:

Was passiert, wenn der Nutzer keine aktuelle Chrome-Version installiert hat?

Benutzerdefinierte Registerkarten verwenden eine ACTION_VIEWAbsicht mit wichtigen Extras, um die Benutzeroberfläche anzupassen. Dies bedeutet, dass die Seite standardmäßig im Systembrowser oder im Standardbrowser des Benutzers geöffnet wird.

Wenn der Nutzer Chrome installiert hat und dies der Standardbrowser ist, wird automatisch die EXTRASangepasste Benutzeroberfläche aufgerufen und angezeigt . Es ist auch möglich, dass ein anderer Browser die Intent-Extras verwendet, um eine ähnlich angepasste Benutzeroberfläche bereitzustellen.

Wenn Sie also einen anderen Browser als Standardbrowser festlegen (dies kann über Einstellungen> Apps> Cog-Menü> Standard-Apps erfolgen ), wird bei jeder App, die versucht, einen benutzerdefinierten Tab zu öffnen, der Link in diesem Browser geöffnet.

Update: Das bedeutet auch, dass es möglich ist, eine "Manager" -App zu schreiben, die sich als Browser darstellt ( ACTION_VIEWIntent behandelt), und nach Erhalt dieser Intent zu prüfen, ob es sich um benutzerdefinierte Tabs handelt. EXTRASJe nach Logik wird ein Browser Ihres Browsers geöffnet Auswahl unter Verwendung einer expliziten Absicht (wobei der gewünschte Name des App-Pakets explizit angegeben wird).

Mikhail Naganov
quelle
Vielen Dank, das Ändern des Standardbrowsers hat bei einigen Apps (z. B. Stack Exchange-App) etwas funktioniert, bei den anderen jedoch nicht (z. B. Google News & Weather) versuche mal zu experimentieren, ob es mit der Automatisierungs-App funktioniert!
Andrew T.
1
Es ist , weil News & Wetter (v versucht 2.3.3.) Gibt die Komponente explizit in der Absicht: 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. Schlechter Stil, aber Sie können nichts dagegen tun :(
Mikhail Naganov
2

Ich benutze 7.1.1 Android. Öffnen Sie die Google-Anwendung oder führen Sie eine Suche durch, klicken Sie auf den Hamburger oben links und rufen Sie die Einstellungen auf.

Gehen Sie in Konten und Datenschutz.

Deaktivieren Sie "Webseiten in App öffnen".

Hierdurch werden anscheinend benutzerdefinierte Chrome-Registerkarten deaktiviert.

Mike Cheel
quelle
3
Dadurch werden benutzerdefinierte Tabs nur in der Suchanwendung (möglicherweise in anderen Google Apps) deaktiviert, jedoch nicht systemweit.
Keith Twombley