Запретить приложениям открывать ссылки в пользовательских вкладках Chrome (т. Е. Открывать непосредственно в браузере по умолчанию)

20

Не так давно Google добавил новую функцию под названием Chrome Custom Tabs начиная с Chrome 45 на Android JellyBean или более поздней версии.

Что такое пользовательские вкладки Chrome?

Разработчики приложений сталкиваются с выбором, когда пользователь нажимает URL-адрес, чтобы либо запустить браузер, либо создать свой собственный браузер в приложении с помощью WebView.

Оба варианта сопряжены с трудностями: запуск браузера - это сложное переключение контекста, которое нельзя настроить, в то время как WebViews не делят состояние с браузером и не увеличивают затраты на обслуживание.

Пользовательские вкладки Chrome дают приложениям больший контроль над веб-интерфейсом и делают переходы между нативным и веб-контентом более плавными, не прибегая к WebView.

Когда это будет доступно?

Начиная с Chrome 45, пользовательские вкладки Chrome теперь в основном доступны для всех пользователей Chrome во всех поддерживаемых версиях Chrome для Android (начиная с Jellybean).

демонстрация пользовательских вкладок

Google включил эту функцию в некоторые из своих приложений (например, Google+ , Поиск Google ), и теперь сторонние приложения также могут использовать ее (например, Twitter , Stack Exchange ).

В то время как некоторые приложения предоставляют настройки для включения / выключения (например, Google Search ), другие, кажется, не могут отключить это. Я знаю, что все еще могу открыть ссылку в Chrome, коснувшись меню переполнения (3 точки в правом верхнем углу) и выбрав Открыть в Chrome . Однако было бы предпочтительнее, если бы его можно было отключить в определенных приложениях.

Итак, мой вопрос: возможно ли отключить эту функцию, желательно в выборочных приложениях ? (под отключением я имею в виду открыть ссылку непосредственно в браузере по умолчанию или предложить пользователю выбрать браузер)

Примечание : я открыт для всех предложений, включая корневые решения или даже удаление Chrome в худшем случае. Однако более практичные ответы предпочтительнее.

Андрей Т.
источник

Ответы:

8

На странице справки по пользовательским вкладкам написано:

Что произойдет, если у пользователя не установлена ​​последняя версия Chrome?

Пользовательские вкладки используют ACTION_VIEWIntent с ключом Extras для настройки пользовательского интерфейса. Это означает, что по умолчанию страница откроется в системном браузере или браузере пользователя по умолчанию.

Если у пользователя установлен Chrome и он является браузером по умолчанию, он автоматически выберет EXTRASи представит настроенный пользовательский интерфейс. Другой браузер также может использовать дополнительные функции Intent для обеспечения аналогичного настраиваемого интерфейса.

Это означает, что если вы сделаете другой браузер браузером по умолчанию (это можно сделать через « Настройки»> «Приложения»> «Cog»> «Приложения по умолчанию» ), любое приложение, пытающееся открыть пользовательскую вкладку, откроет ссылку в этом браузере.

Обновление: это также означает, что можно написать приложение «менеджер», которое представляет собой браузер (обрабатывает ACTION_VIEWнамерение), и при получении этого намерения проверяет, связано ли оно с пользовательскими вкладками EXTRAS, и в зависимости от какой-то логики открывает браузер вашего выбор с использованием явного намерения (где явно указывается желаемое имя пакета приложения).

Михаил Наганов
источник
Спасибо, изменение браузера по умолчанию несколько подействовало на некоторые приложения (например, приложение Stack Exchange), но не сработало на остальных (например, Google News & Weather), не уверен по причинам ... Приложение менеджера - интересная идея, и я попробую поэкспериментировать, если оно работает с приложением автоматизации!
Андрей Т.
1
Это потому , что News & Weather (пробовал V 2.3.3.) Определяет компонент явно цель: 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. Плохой стиль, но с этим ничего не поделаешь :(
Михаил Наганов
2

Я использую 7.1.1 Android. Откройте приложение Google или выполните поиск, щелкните гамбургер в левом верхнем углу и зайдите в Настройки.

Зайдите в Аккаунты и конфиденциальность.

Отключите «открыть веб-страницы в приложении».

Это похоже на отключение пользовательских вкладок Chrome.

Майк Чил
источник
3
Это отключает пользовательские вкладки только в приложении поиска (возможно, в других приложениях Google), но не для всей системы.
Кит Твомбли