Подтвердить что ты не робот

Библиотека пользовательских вкладок

Недавно была добавлена ​​эта библиотека поддержки, но я не смог найти ни одного примера.

Какова цель этой библиотеки?

Не могли бы вы разместить любой пример с помощью этой библиотеки?

4b9b3361

Ответ 1

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-адресов.

  1. Откройте 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

Изменить: Сообщение

Ответ 2

Попробуйте следующее:

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);

Ответ 3

Существует демонстрационный проект на 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-адреса сложнее. Вы можете увидеть эту демонстрацию для лучшего понимания.