# Gestionar la disponibilidad de la aplicación

Esta guía te muestra cómo comprobar si la aplicación Get Mini está instalada en el dispositivo del usuario. Aprenderás a capturar la excepción cuando la aplicación no se encuentre y a redirigir a los usuarios a Google Play.

## Requisitos

Antes de seguir los pasos, asegúrate de tener:

* **Aplicación Android** con capacidad de iniciar Intents
* Acceso a **Google Play** en el dispositivo

<Callout type="warning">

Implementa siempre esta comprobación antes de intentar iniciar intents de pago para proporcionar una mejor experiencia al usuario.

</Callout>

## Comprobación de disponibilidad de la aplicación

Esta sección te guía en la implementación de la gestión de excepciones para detectar cuándo la aplicación Get Mini no está instalada y guiar a los usuarios para que la instalen.

### Paso 1: Envolver el inicio del intent en un try-catch

Cuando intentas iniciar un intent para la aplicación Get Mini, el sistema Android lanzará una `ActivityNotFoundException` si la aplicación no está instalada. Envuelve tu llamada de inicio del intent en un bloque try-catch para gestionar este escenario correctamente.

El siguiente código demuestra cómo capturar la excepción:

```java
String playStoreUrl = "[https://play.google.com/store/apps/details?id=es.android.redsys.Get](https://play.google.com/store/apps/details?id=es.android.redsys.Get) Mini.movil";

try {
    // Attempt to launch the Get Mini intent
    paymentLauncher.launch(intent);

} catch (ActivityNotFoundException e) {
    // Get Mini app is not installed
    showInstallDialog(playStoreUrl);
}
```

<Callout type="note">

Este enfoque funciona tanto con `startActivityForResult` como con la moderna API `ActivityResultLauncher`.

</Callout>

### Paso 2: Mostrar el cuadro de diálogo de instalación

Cuando no se encuentra la aplicación Get Mini, muestra un cuadro de diálogo que explique la situación y proporcione una opción para instalar la aplicación desde Google Play.

```java
private void showInstallDialog(String playStoreUrl) {
    new AlertDialog.Builder(this)
        .setTitle("Get Mini Not Found")
        .setMessage("The Get Mini app must be installed to process payments.")
        .setPositiveButton("Install", (dialog, which) -> {
            // Open Play Store
            Intent storeIntent = new Intent(Intent.ACTION_VIEW);
            storeIntent.setData(Uri.parse(playStoreUrl));
            startActivity(storeIntent);
        })
        .setNegativeButton("Cancel", null)
        .show();
}
```

### Paso 3: Gestionar el retorno de Google Play (Opcional)

Después de que el usuario regrese de Google Play, es posible que quieras comprobar si ha instalado la aplicación y volver a intentar la transacción. Puedes implementar esto comprobando la disponibilidad de la aplicación cuando se reanude tu Activity.

```java
@Override
protected void onResume() {
    super.onResume();

    // Check if user returned from Play Store and installed the app
    if (shouldRetryTransaction && isMposAppInstalled()) {
        retryTransaction();
    }
}

private boolean isMposAppInstalled() {
    Intent intent = new Intent("es.redsys.paysys.mPOSRedsys_PAYMENT_REQUEST");
    return getPackageManager().resolveActivity(intent, 0) != null;
}
```

### Próximos pasos

Ahora que sabes cómo gestionar la disponibilidad de la aplicación, puedes:

* Revisar [Requisitos previos y configuración](/es/get-mini/get-mini-app2app/first-steps/prerequisites-and-setup) para conocer los requisitos del entorno
* Obtener información sobre [Procesar un pago](https://docs.globalgetnet.com/es/products/local-processor-spain/get-mini?doc=getmini-app2app-processing-a-payment) para implementar transacciones de pago
* Leer [Gestionar los resultados de la transacción](/es/get-mini/get-mini-app2app/transaction-guides/response-handling/handle-transaction-results) para procesar las respuestas de Get Mini