Met behulp van de aangepaste tabblad-API op laag niveau

De aanbevolen manier om je applicatie met Custom Tabs te integreren is via de AndroidX Browser Library, maar je kunt ook een Custom Tab starten zonder deze bibliotheek. Deze handleiding geeft een overzicht van hoe je dat kunt doen.

De volledige implementatie van de Support Library is beschikbaar op [GitHub][1] en kan als uitgangspunt worden gebruikt. Deze bevat ook de [AIDL-bestanden][2] die nodig zijn om verbinding te maken met de service, aangezien de bestanden in de Chromium-repository niet direct bruikbaar zijn met Android Studio.

Basisprincipes voor het openen van aangepaste tabbladen met behulp van de low-level 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);

Gebruikersinterface-aanpassingen toevoegen

Aanpassingen aan de gebruikersinterface worden toegevoegd door Extras toe te voegen aan de ACTION_VIEW Intent. Een volledige lijst van de extra sleutels die worden gebruikt om de gebruikersinterface aan te passen, is te vinden in de [CustomTabsIntent docs][3]. Hieronder volgt een voorbeeld van hoe u een aangepaste werkbalkkleur kunt toevoegen:

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

Verbinding maken met de Custom Tabs-service

De Custom Tabs-service kan op dezelfde manier worden gebruikt als andere Android-services. De interface wordt gemaakt met AIDL en genereert automatisch een proxy-serviceklasse voor u.

Gebruik de methoden van de proxyservice om op te warmen, sessies te creëren en gegevens vooraf op te halen:

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

[1]: https://github.com/GoogleChrome/custom-tabs-client/tree/master/customtabs [2]: https://developer.android.com/guide/components/aidl.html [3]: https://developer.android.com/reference/androidx/browser/customtabs/CustomTabsIntent