Рекомендуемый способ интеграции вашего приложения с настраиваемыми вкладками — использование библиотеки браузера AndroidX, но вы также можете запустить настраиваемую вкладку без библиотеки поддержки. В этом руководстве представлен обзор того, как этого добиться.
Полная реализация библиотеки поддержки доступна на GitHub и может использоваться в качестве отправной точки. Он также содержит файлы AIDL, необходимые для подключения к сервису, поскольку файлы, содержащиеся в репозитории Chromium, нельзя использовать напрямую с Android Studio.
Основы запуска пользовательских вкладок с использованием низкоуровневого API
// Using a VIEW intent for compatibility with any other browsers on device. // Caller should not be setting FLAG_ACTIVITY_NEW_TASK or // FLAG_ACTIVITY_NEW_DOCUMENT. String url = ¨https://paul.kinlan.me/¨; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); // Must have. Extra used to match the session. Its value is an IBinder passed // whilst creating a news session. See newSession() below. Even if the service is not // used and there is no valid session id to be provided, this extra has to be present // with a null value to launch a custom tab. private static final String EXTRA_CUSTOM_TABS_SESSION = "android.support.customtabs.extra.SESSION"; Bundle extras = new Bundle; extras.putBinder(EXTRA_CUSTOM_TABS_SESSION, sessionICustomTabsCallback.asBinder() /* Set to null for no session */); intent.putExtras(extras);
Добавление настроек пользовательского интерфейса
Настройки пользовательского интерфейса включаются путем добавления дополнительных возможностей в намерение ACTION_VIEW. Полный список дополнительных клавиш, используемых для настройки пользовательского интерфейса, можно найти в документации CustomTabsIntent . Ниже приведен пример добавления пользовательского цвета панели инструментов:
// Extra that changes the background color for the address bar. colorInt is an int // that specifies a Color. private static final String EXTRA_CUSTOM_TABS_TOOLBAR_COLOR = "android.support.customtabs.extra.TOOLBAR_COLOR"; intent.putExtra(EXTRA_CUSTOM_TABS_TOOLBAR_COLOR, colorInt);
Подключение к сервису «Пользовательские вкладки»
Службу «Пользовательские вкладки» можно использовать так же, как и другие службы Android. Интерфейс создается с помощью AIDL и автоматически создает для вас класс обслуживания прокси.
Используйте методы прокси-службы для разминки, создания сеансов и предварительной выборки:
// Package name for the Chrome channel the client wants to connect to. This // depends on the channel name. // Stable = com.android.chrome // Beta = com.chrome.beta // Dev = com.chrome.dev public static final String CUSTOM_TAB_PACKAGE_NAME = "com.chrome.dev"; // Change when in stable // Action to add to the service intent. This action can be used as a way // generically pick apps that handle custom tabs for both activity and service // side implementations. public static final String ACTION_CUSTOM_TABS_CONNECTION = "android.support.customtabs.action.CustomTabsService"; Intent serviceIntent = new Intent(ACTION_CUSTOM_TABS_CONNECTION); serviceIntent.setPackage(CUSTOM_TAB_PACKAGE_NAME); context.bindService(serviceIntent, mServiceConnection, Context.BIND_AUTO_CREATE | Context.BIND_WAIVE_PRIORITY);