Недавно была добавлена эта библиотека поддержки, но я не смог найти ни одного примера.
Какова цель этой библиотеки?
Не могли бы вы разместить любой пример с помощью этой библиотеки?
Недавно была добавлена эта библиотека поддержки, но я не смог найти ни одного примера.
Какова цель этой библиотеки?
Не могли бы вы разместить любой пример с помощью этой библиотеки?
CustomTabs
используется для открытия ссылок в браузере, поддерживающем CustomTabs
. Скорее всего, открытие выполняется на Chrome, поэтому CustomTabs
является частью платформы Chrome.
Цель состоит в том, чтобы избежать внедрения WebView в вашем приложении и все же предоставить вам возможность стилизации фактических вкладок хрома, таких как цвет панели инструментов, название, различные изменения выхода/ввода, добавление кнопок действий и меню. CustomTabs
позволит вашему приложению привязаться к службе chrome и сделать хром работать как часть вашего приложения. Styling, который даст вам ощущение, что открытый веб-ресурс является частью вашего приложения.
Помимо стиля, CustomTabs предоставит вам полнофункциональные хромовые веб-возможности, которые, вероятно, не могут быть достигнуты с помощью стандартного WebView
.
Вот demos, которые прямолинейны.
Edit:
A фрагмент из моего приложения, который пока является "упрощенной" версией Google, без механизма резервного копирования.
Использование помощника заключается в следующем:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preview);
mCustomTabHelper = new SimpleCustomChromeTabsHelper(this);
}
2. When the instance is alive and we have an url ready to be opened we can call:
mCustomTabHelper.prepareUrl(mProduct.getRedirectUrl());
Что будет привязано к службе Chrome, если она ранее не привязана, или просто уведомит службу Chrome, что мы могли бы открыть эту ссылку в будущем.
CustomTabSession
можно использовать для открытия или подготовки нескольких URL-адресов.
Откройте URL
mCustomTabHelper.openUrl(mProduct.getRedirectUrl());
Перегруженный метод openUrl
использует тип ui options builder, который является репликой CustomTabIntent.Builder
, но я отбросил аргумент CustomTabsSession
, чтобы помощник позже построил CustomTabIntent
внутренне.
Я запускаю версию Chrome Dev по стабильной. Если я выберу стабильный, я не смогу использовать CustomTabs
вообще. Как советы Google, CustomTabs будет работать только на Chrome 45 и бета-версии Chrome.
Демо из моего приложения: https://youtu.be/fnIZwuJXjHI
Изменить: Сообщение
Попробуйте следующее:
gradle зависимость:
dependencies {
...
compile 'com.android.support:customtabs:25.1.0'
}
Код:
Uri uri = Uri.parse("https://github.com/mzelzoghbi");
// create an intent builder
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
// Begin customizing
// set toolbar colors
intentBuilder.setToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary));
intentBuilder.setSecondaryToolbarColor(ContextCompat.getColor(this, R.color.colorPrimaryDark));
// build custom tabs intent
CustomTabsIntent customTabsIntent = intentBuilder.build();
// launch the url
customTabsIntent.launchUrl(activity, uri);
Существует демонстрационный проект на github, упомянутый @NikolaDespotoski, который может быть частично повторно использован.
Решение основано на в этой статье.
Добавьте проект общий в проект. Shared - это название проекта (я не знаю, почему Google не добавлял его в библиотеку customtabs
). ссылка на общий проект
Скопируйте помощник операции из демонстрационного проекта в свой проект и поставьте правильный пакет. CustomTabActivityHelper
Чтобы предварительно использовать URL-адрес, используйте CustomTabActivityHelper#mayLaunchUrl
(при необходимости) и CustomTabActivityHelper#openCustomTab
, чтобы открыть вкладку Chrome.
Например, открыв пользовательскую вкладку:
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
CustomTabActivityHelper.openCustomTab(this, customTabsIntent, uri,
new CustomTabActivityHelper.CustomTabFallback() {
@Override
public void openUri(Activity activity, Uri uri) {
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});
Предварительная выборка URL-адреса сложнее. Вы можете увидеть эту демонстрацию для лучшего понимания.