Accorder un accès limité aux photos et aux vidéos

Les utilisateurs qui interagissent avec votre application sur des appareils Android 14 peuvent désormais accorder un accès partiel à leur bibliothèque multimédia visuelle (Photos/Vidéos) lorsqu'une application demande des autorisations de médias visuels (READ_MEDIA_IMAGES ou READ_MEDIA_VIDEO). introduites dans Android 13 (niveau d'API 33).

La nouvelle boîte de dialogue contient les options suivantes :

  • Sélectionner des photos et des vidéos : nouveautés d'Android 14. L'utilisateur sélectionne les photos et vidéos qu'il souhaite mettre à disposition de votre application.
  • Tout autoriser : l'utilisateur accorde l'accès à l'ensemble des photos et des vidéos de l'appareil.
  • Ne pas autoriser : l'utilisateur refuse tout accès.

Si l'utilisateur choisit Sélectionner des photos et des vidéos et que votre application demande par la suite READ_MEDIA_IMAGES ou READ_MEDIA_VIDEO, le système affiche une autre boîte de dialogue, ce qui lui permet d'accéder à des photos et à des vidéos supplémentaires.

Pour aider les applications à prendre en charge les nouvelles modifications, le système introduit une nouvelle autorisation, READ_MEDIA_VISUAL_USER_SELECTED.

Conséquences de la déclaration de la nouvelle autorisation

Si vous déclarez l'autorisation READ_MEDIA_VISUAL_USER_SELECTED et que l'utilisateur choisit Sélectionner des photos et des vidéos dans la boîte de dialogue des autorisations système, le comportement suivant se produit :

  • Les autorisations READ_MEDIA_IMAGES et READ_MEDIA_VIDEO sont toutes deux refusées.
  • L'autorisation READ_MEDIA_VISUAL_USER_SELECTED est accordée, offrant un accès partiel et temporaire aux photos et vidéos de l'utilisateur.
  • Si votre application a besoin d'accéder à d'autres photos et vidéos, vous devez redemander manuellement l'autorisation READ_MEDIA_IMAGES ou l'autorisation READ_MEDIA_VIDEO (ou les deux).

N'oubliez pas que READ_MEDIA_IMAGES et READ_MEDIA_VIDEO sont les seules autres autorisations nécessaires pour accéder à la bibliothèque de photos et de vidéos de l'utilisateur. La déclaration de READ_MEDIA_VISUAL_USER_SELECTED indique au contrôleur d'autorisation que votre application est compatible avec une nouvelle requête manuelle visant à sélectionner davantage de photos et de vidéos.

Pour empêcher les utilisateurs de voir plusieurs boîtes de dialogue d'exécution du système, demandez les autorisations READ_MEDIA_VISUAL_USER_SELECTED, ACCESS_MEDIA_LOCATION et "lecture des médias" (READ_MEDIA_IMAGES, READ_MEDIA_VIDEO ou les deux) lors d'une même opération.

Conséquences de la non-déclaration de la nouvelle autorisation

Si vous ne déclarez pas l'autorisation READ_MEDIA_VISUAL_USER_SELECTED, le comportement suivant se produit :

  • Les autorisations READ_MEDIA_IMAGES et READ_MEDIA_VIDEO sont accordées pendant la session de l'application. Elles donnent une autorisation et un accès temporaires aux photos et vidéos sélectionnées par l'utilisateur. Lorsque votre application passe en arrière-plan ou que l'utilisateur la ferme volontairement, le système finit par refuser ces autorisations. Ce comportement est similaire à celui d'autres autorisations ponctuelles.
  • Si votre application a besoin d'accéder à des photos et vidéos supplémentaires ultérieurement, vous devez redemander manuellement l'autorisation READ_MEDIA_IMAGES ou READ_MEDIA_VIDEO. Le système suit le même flux que celui de la demande d'autorisation initiale, invitant les utilisateurs à sélectionner des photos et des vidéos.

L'accès aux photos et vidéos est préservé lorsque l'appareil est mis à niveau

Si votre application est installée sur un appareil qui met à niveau une version antérieure d'Android vers Android 14, le système conserve un accès complet aux photos et vidéos de l'utilisateur et accorde automatiquement certaines autorisations à votre application. Le comportement exact dépend de l'ensemble d'autorisations accordées à votre application avant la mise à niveau de l'appareil vers Android 14.

Autorisations d'Android 13

Prenons la situation suivante :

  1. Votre application est installée sur un appareil équipé d'Android 13.
  2. L'utilisateur a accordé les autorisations READ_MEDIA_IMAGES et READ_MEDIA_VIDEO à votre application.
  3. L'appareil passe ensuite à Android 14 et votre application n'est pas désinstallée.

Dans ce cas, votre application dispose d'un accès complet aux photos et vidéos de l'utilisateur. Le système conserve également les autorisations READ_MEDIA_IMAGES et READ_MEDIA_VIDEO accordées automatiquement à votre application.

Autorisations d'Android 12 et versions antérieures

Prenons la situation suivante :

  1. Votre application est installée sur un appareil équipé d'Android 13.
  2. L'utilisateur a accordé l'autorisation READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE à votre application.
  3. L'appareil passe ensuite à Android 14 et votre application n'est pas désinstallée.

Dans ce cas, votre application dispose d'un accès complet aux photos et vidéos de l'utilisateur. Le système accorde également automatiquement l'autorisation READ_MEDIA_IMAGES et l'autorisation READ_MEDIA_VIDEO à votre application.

Bonnes pratiques

Cette section contient plusieurs bonnes pratiques concernant l'utilisation de l'autorisation READ_MEDIA_VISUAL_USER_SELECTED.

Le traitement multimédia en arrière-plan nécessite automatiquement la nouvelle autorisation

Si l'application effectue un traitement multimédia, par exemple en compressant ou en important des contenus en arrière-plan, n'oubliez pas que les états d'autorisation READ_MEDIA_IMAGES et READ_MEDIA_VIDEO finiront par être refusés à nouveau. Nous vous recommandons vivement d'ajouter la compatibilité avec READ_MEDIA_VISUAL_USER_SELECTED. Votre application doit également vérifier si elle a accès à la photo ou à la vidéo en question en ouvrant un InputStream ou en exécutant une requête à l'aide de ContentResolver.

Ne pas stocker l'état d'autorisation de manière permanente

Ne stockez pas l'état d'autorisation de manière permanente, y compris SharedPreferences ou DataStore. L'état stocké peut ne pas être synchronisé avec l'état réel. L'état de l'autorisation peut changer après la réinitialisation de l'autorisation, l'hibernation de l'application, une modification des paramètres de votre application par l'utilisateur ou lorsque votre application passe en arrière-plan. Vérifiez plutôt les autorisations de stockage à l'aide de ContextCompat.checkSelfPermission().

Ne pas supposer que vous avez un accès complet aux photos et vidéos

En raison des modifications apportées par Android 14, il est possible que votre application ne dispose que d'un accès partiel à la bibliothèque de photos de l'appareil. Si l'application met en cache des données MediaStore lorsqu'elle est interrogée à l'aide de ContentResolver, une mise à jour du cache est peut-être nécessaire.

  • Interrogez toujours MediaStore à l'aide de ContentResolver, au lieu d'utiliser un cache stocké.
  • Gardez les résultats en mémoire lorsque votre application est au premier plan.

Traiter l'accès à l'URI comme temporaire

Si l'utilisateur choisit Sélectionner des photos et des vidéos dans la boîte de dialogue des autorisations système, l'accès de votre application aux photos et vidéos sélectionnées finira par expirer. Votre application doit toujours gérer l'absence d'accès à n'importe quel Uri, quelle que soit son autorité.