Chrome Custom Tabs for Android

Working with Custom Tabs isn’t exactly straightforward. Even minimal examples involve quite a bit of code as can be seen in the Official Chrome Custom Tabs documentation.

What makes it worse is that one can’t expect Chrome to be available on any device. That means additional code to fall back to good old WebView. To simplify the experience, there is a new library available that provides a higher-level interface that implements many often-needed convenience features: github.com/saschpe/android-customtabs

To create a new CustomTabsIntent and start it with a keep-alive service as well as a fallback:

CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
    .addDefaultShareMenuItem()
    .setToolbarColor(this.getResources()
        .getColor(R.color.colorPrimary))
    .setShowTitle(true)
    .setCloseButtonIcon(backArrow)
    .build();

// This is optional but recommended
CustomTabsHelper.addKeepAliveExtra(this, customTabsIntent.intent);

// This is where the magic happens...
CustomTabsHelper.openCustomTab(this, customTabsIntent,
        Uri.parse("https://github.com/saschpe/android-customtabs"),
        new WebViewFallback());

Preload CustomTabs in your Application.java to warm-up early and reduce start-up time:

// Preload custom tabs service for improved performance
// This is optional but recommended
registerActivityLifecycleCallbacks(new
    CustomTabsActivityLifecycleCallbacks());

This is how it looks:

Now Custom Tabs are great again!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s