> For the complete documentation index, see [llms.txt](https://devcenter.unico.io/unico-idpay/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://devcenter.unico.io/unico-idpay/integracao/controlando-a-experiencia/mobile/android.md).

# Android

O campo **link** é usado para direcionar o usuário. Esse campo é recebido na resposta de sucesso da criação da transação.

Aqui você encontrará a melhor forma de gerenciar a experiência do usuário em sua aplicação Android:

### **Passo 1: Usando CustomTabs para integração** <a href="#passo-1-usando-customtabs" id="passo-1-usando-customtabs"></a>

1 - Insira no `app/build.gradle` a dependência necessária para o uso de CustomTabs:

```
implementation("androidx.browser:browser:1.5.0")
```

### **Passo 2: Abrindo uma CustomTab** <a href="#passo-2-abrindo-customtabs" id="passo-2-abrindo-customtabs"></a>

```java
import android.net.Uri
import androidx.activity.ComponentActivity
import androidx.browser.customtabs.CustomTabsClient
import androidx.browser.customtabs.CustomTabsIntent

class CustomTabActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)

       openCustomTab(<URL_CBU>)
    }

    fun openCustomTab(url: String) {
        val builder = CustomTabsIntent.Builder()
        val customTabsIntent = builder.build()
        customTabsIntent.launchUrl(this, Uri.parse(url))
    }
}
```

### **Passo 3: Modificando AndroidManifest** <a href="#passo-3-modificando-androidmanifest" id="passo-3-modificando-androidmanifest"></a>

Coloque no *AndroidManifest.xml* as permissões e intents necessários na **Activity** que deseja receber a *callback\_uri.*\
É necessário incluir o atributo `android:launchMode="singleTop"` como também a *tag* **`<data>`** informando os dados da **URI**.

```java
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-permission android:name="android.permission.CAMERA"/> 
// necessário ter as permissões de câmera e geolocalização 

<activity
    android:name=".CustomTabActivity"
    android:exported="true"
    android:label="@string/app_name"
    android:theme="@style/Theme.Customtabs"
    android:launchMode="singleTop">

    <intent-filter android:label="Custom Tab">
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <!-- scheme e host são os dados fornecidos na criação de um processo no campo callback_uri
        callback_uri: "foobar://success?code=1234" -->
        <data android:scheme="foobar" android:host="success"/>
    </intent-filter>

</activity>
```

As seguintes permissões são necessárias para funcionar corretamente:

* Câmera;
* Geolocalização.

### **Passo 4: Pegando informações de retorno** <a href="#passo-4-pegando-informacoes-de-retorno" id="passo-4-pegando-informacoes-de-retorno"></a>

Para pegar as informações de redirect com os dados fornecidos, você pode usar o seguinte código no método `onNewIntent` da sua **Activity**:

```java
override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)

    val url = intent.data
    val scheme = url.scheme // "foobar"
    val host = url.host // "success"
    val code = url.getQueryParameter("code") // "1234"
}
```

{% hint style="success" %}

#### Também é possível utilizar o link gerado pelo by Unico em frameworks híbridos. Para isso, você pode criar uma bridge entre o framework utilizado com o nativo e seguir como sugerimos na documentação ou utilizar de alguma biblioteca que disponibilize essas opções de integração.

{% endhint %}

{% hint style="warning" %}
A integração da WebView na sua aplicação é de total responsabilidade do cliente, uma vez que esta funcionalidade não é oferecida como parte das bibliotecas ou SDKs da Unico. Por conta disso, não oferecemos suporte técnico para dúvidas ou problemas relacionados à implementação da WebView em seu aplicativo. Para obter orientações sobre a configuração, recomendamos consultar a documentação oficial da tecnologia utilizada em seu projeto (por exemplo, React Native, Flutter, etc).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://devcenter.unico.io/unico-idpay/integracao/controlando-a-experiencia/mobile/android.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
