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
etREAD_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'autorisationREAD_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
etREAD_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
ouREAD_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 :
- Votre application est installée sur un appareil équipé d'Android 13.
- L'utilisateur a accordé les autorisations
READ_MEDIA_IMAGES
etREAD_MEDIA_VIDEO
à votre application. - 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 :
- Votre application est installée sur un appareil équipé d'Android 13.
- L'utilisateur a accordé l'autorisation
READ_EXTERNAL_STORAGE
ouWRITE_EXTERNAL_STORAGE
à votre application. - 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 deContentResolver
, 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é.