---
title: "Vérifier le statut d'abonnement dans le SDK Android"
description: "Apprenez à vérifier le statut d'abonnement dans votre application Android avec Adapty."
---

Pour décider si les utilisateurs peuvent accéder au contenu payant ou voir un paywall, vous devez vérifier leur [niveau d'accès](access-level) dans le profil.

Cet article vous montre comment accéder à l'état du profil pour décider ce que les utilisateurs doivent voir — afficher un paywall ou leur donner accès aux fonctionnalités payantes.

## Obtenir le statut d'abonnement \{#get-subscription-status\}

Lorsque vous décidez d'afficher un paywall ou du contenu payant à un utilisateur, vous vérifiez son [niveau d'accès](access-level) dans son profil. Deux options s'offrent à vous :

- Appelez `getProfile` si vous avez besoin des dernières données de profil immédiatement (par exemple au lancement de l'application) ou pour forcer une mise à jour.
- Configurez les **mises à jour automatiques du profil** pour conserver une copie locale qui se rafraîchit automatiquement dès que le statut d'abonnement change.

### Obtenir le profil \{#get-profile\}

La façon la plus simple d'obtenir le statut d'abonnement est d'utiliser la méthode `getProfile` pour accéder au profil :

<Tabs groupId="current-os" queryString>

<TabItem value="kotlin" label="Kotlin" default>

```kotlin showLineNumbers
Adapty.getProfile { result ->
    when (result) {
        is AdaptyResult.Success -> {
            val profile = result.value
            // check the access
        }
        is AdaptyResult.Error -> {
            val error = result.error
            // handle the error
        }
    }
}
```
</TabItem>
<TabItem value="java" label="Java" default>
```java showLineNumbers
Adapty.getProfile(result -> {
    if (result instanceof AdaptyResult.Success) {
        AdaptyProfile profile = ((AdaptyResult.Success<AdaptyProfile>) result).getValue();
        // check the access

    } else if (result instanceof AdaptyResult.Error) {
        AdaptyError error = ((AdaptyResult.Error) result).getError();
        // handle the error
    }
});
```
</TabItem>
</Tabs>

### Écouter les mises à jour d'abonnement \{#listen-to-subscription-updates\}

Pour recevoir automatiquement les mises à jour du profil dans votre application :

1. Utilisez `Adapty.setOnProfileUpdatedListener()` pour écouter les changements de profil — Adapty appellera automatiquement cette méthode dès que le statut d'abonnement de l'utilisateur change.
2. Stockez les données de profil mises à jour lorsque cette méthode est appelée, afin de pouvoir les utiliser partout dans votre application sans effectuer de requêtes réseau supplémentaires.

<Tabs>
<TabItem value="kotlin" label="Kotlin" default>

```kotlin
class SubscriptionManager {
    private var currentProfile: AdaptyProfile? = null
    
    init {
        // Listen for profile updates
        Adapty.setOnProfileUpdatedListener { profile ->
            currentProfile = profile
            // Update UI, unlock content, etc.
        }
    }
    
    // Use stored profile instead of calling getProfile()
    fun hasAccess(): Boolean {
        return currentProfile?.accessLevels["YOUR_ACCESS_LEVEL"]?.isActive == true
    }
}
```

</TabItem>

<TabItem value="java" label="Java">

```java
public class SubscriptionManager {
    private AdaptyProfile currentProfile;

    public SubscriptionManager() {
        // Listen for profile updates
        Adapty.setOnProfileUpdatedListener(profile -> {
            this.currentProfile = profile;
            // Update UI, unlock content, etc.
        });
    }
    
    // Use stored profile instead of calling getProfile()
    public boolean hasAccess() {
        if (currentProfile == null) {
            return false;
        }
        
        AdaptyAccessLevel premiumAccess = currentProfile.getAccessLevels().get("YOUR_ACCESS_LEVEL");
        return premiumAccess != null && premiumAccess.isActive();
    }
}
```

</TabItem>
</Tabs>

:::note
Adapty appelle automatiquement l'écouteur de mise à jour du profil au démarrage de votre application, en fournissant les données d'abonnement mises en cache même si l'appareil est hors ligne.
:::

## Connecter le profil à la logique des paywalls \{#connect-profile-with-paywall-logic\}

Lorsque vous devez prendre des décisions immédiates concernant l'affichage des paywalls ou l'accès aux fonctionnalités payantes, vous pouvez vérifier directement le profil de l'utilisateur. Cette approche est utile dans des scénarios comme le lancement de l'application, l'entrée dans des sections premium, ou avant l'affichage de contenu spécifique.

<Tabs>
<TabItem value="kotlin" label="Kotlin" default>

```kotlin
private fun initializePaywall() {
    loadPaywall { paywallView ->
        checkAccessLevel { result ->
            when (result) {
                is AdaptyResult.Success -> {
                    if (!result.value && paywallView != null) {
                        setContentView(paywallView) // Show paywall if no access
                    }
                }
                is AdaptyResult.Error -> {
                    if (paywallView != null) {
                        setContentView(paywallView) // Show paywall if access check fails
                    }
                }
            }
        }
    }
}

private fun checkAccessLevel(callback: ResultCallback<Boolean>) {
    Adapty.getProfile { result ->
        when (result) {
            is AdaptyResult.Success -> {
                val hasAccess = result.value.accessLevels["YOUR_ACCESS_LEVEL"]?.isActive == true
                callback.onResult(AdaptyResult.Success(hasAccess))
            }
            is AdaptyResult.Error -> {
                callback.onResult(AdaptyResult.Error(result.error))
            }
        }
    }
}
```

</TabItem>

<TabItem value="java" label="Java">

```java
private void initializePaywall() {
    loadPaywall(paywallView -> {
        checkAccessLevel(result -> {
            if (result instanceof AdaptyResult.Success) {
                boolean hasAccess = ((AdaptyResult.Success<Boolean>) result).getValue();
                if (!hasAccess && paywallView != null) {
                    setContentView(paywallView); // Show paywall if no access
                }
            } else if (result instanceof AdaptyResult.Error) {
                if (paywallView != null) {
                    setContentView(paywallView); // Show paywall if access check fails
                }
            }
        });
    });
}

private void checkAccessLevel(ResultCallback<Boolean> callback) {
    Adapty.getProfile(result -> {
        if (result instanceof AdaptyResult.Success) {
            AdaptyProfile profile = ((AdaptyResult.Success<AdaptyProfile>) result).getValue();
            AdaptyAccessLevel premiumAccess = profile.getAccessLevels().get("YOUR_ACCESS_LEVEL");
            boolean hasAccess = premiumAccess != null && premiumAccess.isActive();
            callback.onResult(AdaptyResult.success(hasAccess));
        } else if (result instanceof AdaptyResult.Error) {
            callback.onResult(AdaptyResult.error(((AdaptyResult.Error) result).getError()));
        }
    });
}
```

</TabItem>
</Tabs>

## Étapes suivantes \{#next-steps\}

Maintenant que vous savez comment suivre le statut d'abonnement, apprenez à [travailler avec les profils utilisateurs](android-quickstart-identify) pour vous assurer qu'ils peuvent accéder à ce pour quoi ils ont payé.