---
title: Android
description: 'Cómo gestionar la experiencia de captura de Verificación de Tarjeta No Presente en Android mediante CustomTabs: dependencia, apertura de la pestaña, configuración del manifest y lectura del callback.'
canonical: https://developer.unico.io/es/dual-api/developers/regional-solutions/card-not-present-verification/integration/controlling-the-experience/mobile/android
locale: es
generated_by: markdown-export
---

El campo **link** se utiliza para dirigir al usuario. Este campo se recibe en la respuesta exitosa de creación de la transacción.

Aquí encontrarás la mejor manera de gestionar la experiencia del usuario en tu aplicación Android:

### Paso 1: Usar CustomTabs para la integración

Agrega la dependencia necesaria para usar CustomTabs en tu `app/build.gradle`:

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

### Paso 2: Abrir un CustomTab

```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))
    }
}
```

### Paso 3: Modificar el AndroidManifest

Agrega los permisos e intents necesarios en el `AndroidManifest.xml` para la Activity que recibirá el `callback_uri`. Es necesario incluir el atributo `android:launchMode="singleTop"`, así como la etiqueta `<data>` proporcionando los datos de la URI.

```java
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-permission android:name="android.permission.CAMERA"/>
// permissions for camera and geolocation are required

<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 and host are the data provided at process creation in the callback_uri field
        callback_uri: "foobar://success?code=1234" -->
        <data android:scheme="foobar" android:host="success"/>
    </intent-filter>

</activity>
```

Los siguientes permisos son necesarios para que funcione correctamente:

- Cámara
- Geolocalización

### Paso 4: Obtener la información de retorno

Para recuperar la información de redirección con los datos proporcionados, puedes usar el siguiente código en el método `onNewIntent` de tu 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"
}
```

:::tip
También es posible usar el enlace generado por Unico en frameworks híbridos. Para hacerlo, puedes crear un puente entre el framework utilizado y el nativo, y seguir lo que sugerimos en los documentos, o usar una librería que ofrezca estas opciones de integración.
:::

:::warning
La integración de WebView en tu aplicación es responsabilidad exclusiva del cliente, ya que esta funcionalidad no se ofrece como parte de las librerías o SDKs de Unico. Por este motivo, no ofrecemos soporte técnico para preguntas o problemas relacionados con la implementación de WebView en tu aplicación. Para orientación sobre configuración, recomendamos consultar la documentación oficial de la tecnología utilizada en tu proyecto (por ejemplo, React Native, Flutter, etc.).
:::