Android 11 implémente un changement qui empêchera les applications d'appareil photo tierces d'apparaître dans les actions d'intention de sélection d'images/vidéos.
Mise à jour 1 (20/08/2020 à 18h15 HE) : Google a mis à jour sa documentation destinée aux développeurs pour expliquer pourquoi les applications d'appareil photo tierces sur Android 11 ne sont pas en mesure de répondre aux actions d'intention implicites d'image/vidéo. Faites défiler vers le bas pour plus d’informations. L’article tel que publié le 19 août 2020 est conservé ci-dessous.
Android 11 change la façon dont les applications interagissent avec applications de caméra tierces sur votre appareil, ce qui les empêchera d'apparaître dans les intentions de sélection d'images/vidéos. Dans les anciennes versions d'Android, si une application souhaite permettre aux utilisateurs de capturer une image, elle peut soit implémenter la prise de photos dans l'application (en utilisant les différentes API de caméra d'Android) ou il peut envoyer une intention qui peut être gérée par une application de caméra dédiée pour capturer l'image plutôt. Si une application décide d'opter pour cette dernière option, les utilisateurs des anciennes versions d'Android se voient présenter une boîte de dialogue de désambiguïsation pour sélectionner l'application appareil photo de leur choix pour capturer l'image. La boîte de dialogue affiche généralement toutes les applications d'appareil photo installées sur l'appareil de l'utilisateur, y compris les applications d'appareil photo tierces, à condition qu'elles soient écrites pour répondre à certaines intentions. Cependant, avec Android 11, la boîte de dialogue n'inclura que les applications d'appareil photo préinstallées, à moins que les développeurs ne ciblent spécifiquement certaines applications d'appareil photo tierces.
Le changement signifie effectivement que, dans la plupart des cas, les utilisateurs devront lancer manuellement des applications d'appareil photo tierces lorsqu'ils souhaitent prendre une photo, ce qui rendra les applications d'appareil photo tierces moins pratiques à utiliser. Cela incitera également les utilisateurs à blâmer les développeurs d'applications d'appareil photo tierces lorsqu'ils découvriront que leur application d'appareil photo préférée ne peut plus être lancée à partir d'autres applications. Google met en œuvre ce changement dans Android 11 en empêchant les applications d'appareil photo tierces de répondre aux actions d'intention suivantes :
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
Google dit que ce changement a été mis en place dans Android 11 pour protéger la confidentialité et la sécurité de ses utilisateurs. La société ne précise pas comment, mais il est probable que certaines applications malveillantes se soient fait passer pour des applications d'appareil photo pour accéder aux photos d'un utilisateur. Cependant, la société mentionne une solution de contournement pour les développeurs qui permettra aux applications de toujours lancer des applications d'appareil photo tierces. La solution de contournement nécessite essentiellement que les développeurs ciblent une application tierce spécifique de leur choix lors de l'envoi d'une intention. Par exemple, le développeur d'une application de numérisation de documents peut envoyer une intention explicite de lancement Appareil photo Adobe Photoshop plutôt que d'envoyer une intention implicite d'ouvrir le sélecteur de caméra. Android 11 fait en sorte que les développeurs ne puissent même pas interroger la liste des applications pouvant répondre aux 3 ci-dessus actions d'intention, ce qui signifie qu'un développeur devra savoir à l'avance quelles applications de caméra tierces il souhaite soutien.
Source: CommonsWare, Développeurs Android
Via: Reddit
Merci au membre senior XDA Développeur AndroidLB pour le conseil !
Mise à jour 1: Google affirme que ce changement vise à préserver la confidentialité
Google a mis à jour sa page de modifications de comportement d'Android 11 avec de nouvelles informations sur le "les actions d'intention médiatique nécessitent une caméra par défaut du système" rubrique (via Le bord). Le changement, explique Google, est « conçu pour garantir que les métadonnées de localisation EXIF sont correctement traitées en fonction des autorisations de localisation définies dans le application qui envoie l'intention. " Fondamentalement, Google craint que les applications qui n'ont pas encore obtenu un accès explicite à la localisation obligent les utilisateurs à ouvrir des applications d'appareil photo qui avoir a obtenu l'accès à la localisation, et puisque la photo résultante transmise à l'application peut contenir une localisation EXIF métadonnées, l'application appelante peut contourner la demande d'accès à la localisation en lisant les données de localisation à partir du photo. Si une application tente de le faire sous Android 11, elle devra déclarer ACCESS_MEDIA_LOCATION
ainsi que ACCESS_COARSE_LOCATION
ou ACCESS_FINE_LOCATION
autorisations afin de lire les métadonnées de localisation EXIF. (À noter, Google a comblé une autre faille d'accès à la localisation dans Android 10 en exigeant que les applications demandent le ACCESS_MEDIA_LOCATION
autorisation si une application tente de récupérer des métadonnées EXIF non expurgées à partir de photos.)
Bien que ce changement de comportement affectera la capacité des applications à lancer l'application d'appareil photo par défaut définie par l'utilisateur en raison de l'ancienneté et de la fréquence d'utilisation du 3 Les actions d'intention susmentionnées sont, Google note que le changement n'affecte pas toutes les actions d'intention qui peuvent lancer l'application de caméra par défaut définie par l'utilisateur, telles que comme: android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA
, android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE
, ou android.provider.MediaStore.INTENT_ACTION_VIDEO_CAMERA
. Ces intentions ne servent cependant pas le même objectif, car elles lancent uniquement l'application d'appareil photo par défaut plutôt que de permettre le renvoi d'une image à l'application appelante.