# Android Embed

### Implementing Chrome Custom Tabs for GMetri Experiences[​](https://www.gmetri.com/docs/platform/publish/embed/android-embed#implementing-chrome-custom-tabs-for-gmetri-experiences) <a href="#implementing-chrome-custom-tabs-for-gmetri-experiences" id="implementing-chrome-custom-tabs-for-gmetri-experiences"></a>

To run GMetri experiences inside android apps, we recommend an implementation of Chrome Custom Tabs API. Detailed information on how to setup an android experience with Chrome Custom Tabs can be found in this [experience](https://github.com/gmetrixr/chrome-custom-tabs/).

Also checkout this [link ](https://docs.gmetri.com/metaverse/authentication/token#creating-jwt-tokens-in-an-android-app)if you need authentication on GMetri experiences within your android app.

In your android experience add the required dependencies for Chrome Custom Tabs. Following is an example of gradle build dependencies:

```groovy
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:customtabs:26.1.0'
}
```

Information on how to install dependencies for other build systems are is in the links below:

<https://developer.chrome.com/multidevice/android/customtabs/>

From this [experience](https://github.com/gmetrixr/chrome-custom-tabs/) , copy 2 files: `ChromeCustomTabs.java` and `ServiceConnectionCallback.java` into your android experience. These files together provide the interface for chrome custom tabs to run GMetri experiences.

The className `ChromeCustomTabs.java` implements 2 public methods:

1. `initialize(String url, Context context)`
2. `launch()`

Arguments:

1. **url** - Url of the experience
2. **context** - Context of your activity (`this`)

An example implementation of the above classes:

```java
  ChromeCustomTabsJwt chromeCustomTabs = new ChromeCustomTabsJwt();
  chromeCustomTabs = new ChromeCustomTabs();
  String url = "https://view.gmetri.com/v4/game/safehands_v2";
  chromeCustomTabs.initialize(url, this);
  chromeCustomTabs.launch();
```

### More About Chrome Custom Tabs

* To enable GMetri XR experiences within an Android app, the app needs to implement the Chrome CustomTabs API as described in this [article](https://developer.chrome.com/multidevice/android/customtabs/).
* Chrome CustomTabs remove the restrictions imposed by WebViews on serving XR content. While WebViews don't share their state with the Chrome browser, ChromeCustomTabs are fully embeddable browser extensions capable of doing anything that a native Chrome browser can do.
* Chrome CustomTabs give apps higher control over web experience and make transitions between native and web content seamless without having to resort to a WebView.

<figure><img src="https://r.vrgmetri.com/raw/gb-web/portal-docs/assets/img/screenshots/performance.gif" alt=""><figcaption></figcaption></figure>
