Demander l'autorisation d'accéder à la position

Il existe plusieurs façons de demander des informations sur la position de l'utilisateur sur Android, et la meilleure méthode varie selon le cas d'utilisation. Ce guide décrit différents scénarios d'accès à la position et explique comment demander l'autorisation d'accéder à la position dans chaque cas.

Pour commencer, consultez les bonnes pratiques pour toutes les autorisations d'exécution, ainsi que les conseils plus généraux pour minimiser les demandes d'autorisation.

Types d'accès à la position

Chaque autorisation présente une combinaison des caractéristiques suivantes :

Localisation au premier plan

Si votre application contient une fonctionnalité qui ne partage ou ne reçoit des informations de localisation qu'une seule fois, ou pendant une durée déterminée, un accès à la localisation au premier plan est nécessaire. Quelques exemples :

  • Dans une application de navigation, une fonctionnalité permet aux utilisateurs d'obtenir des instructions de navigation détaillées.
  • Dans une application de chat, une fonctionnalité permet aux utilisateurs de partager leur position actuelle avec un autre utilisateur.

Le système considère que votre application utilise la localisation au premier plan si l'une des fonctionnalités de votre application accède à la position actuelle de l'appareil dans l'une des situations suivantes :

  • Une activité liée à votre application est visible.
  • Votre application exécute un service de premier plan. Lorsqu'un service de premier plan est en cours d'exécution, le système le fait savoir à l'utilisateur en affichant une notification permanente. Votre application conserve l'accès lorsqu'elle est placée en arrière-plan (par exemple, lorsque l'utilisateur appuie sur le bouton Accueil ou éteint l'écran de son appareil).

    Vous devez également déclarer un type de service de premier plan location, comme indiqué dans l'extrait de code suivant. Sur Android 10 (niveau d'API 29) ou version ultérieure, vous devez déclarer ce type de service de premier plan.

    <!-- Recommended for Android 9 (API level 28) and lower. -->
    <!-- Required for Android 10 (API level 29) and higher. -->
    <service
        android:name="MyNavigationService"
        android:foregroundServiceType="location" ... >
        <!-- Any inner elements would go here. -->
    </service>
    

Vous déclarez que la localisation au premier plan est nécessaire lorsque votre application demande l'autorisation ACCESS_COARSE_LOCATION ou ACCESS_FINE_LOCATION, comme indiqué dans l'extrait de code suivant :

<manifest ... >
  <!-- Always include this permission -->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />