De Photo Picker was een optionele API voor apps die toegang wilden tot je galerij in Android 13, maar het wordt enigszins verplicht in Android 14.
Een van de hoogtepunten van Android 13 is de Photo Picker, een nieuwe systeemcomponent waarmee gebruikers kunnen kiezen tot welke foto's en video's ze een app toegang willen geven. Apps hoeven geen toestemming te vragen om toegang te krijgen tot items die de gebruiker selecteert via de Photo Picker, waardoor het een privacybeschermende manier is om foto's en video's met apps te delen. De systeembestandskiezer die al bestaat sinds Android 4.4 biedt meer functionaliteit dan de Fotokiezer, maar de gebruikersinterface is in vergelijking gedateerd.
De fotokiezer (en de systeembestandskiezer ervoor) beschermt uw privacy door u te laten beperken tot welke foto's en video's een app toegang heeft. Helaas ondersteunen veel apps de Photo Picker niet, ook al is er een achterwaarts compatibele versie beschikbaar voor Android 4.4+. Apps moeten de Photo Picker specifiek met een bedoeling aanroepen, maar veel apps kiezen ervoor om deze om de een of andere reden niet te gebruiken. Gelukkig maakt dat misschien niet meer uit
Android 14, dat een manier test waarop gebruikers kunnen kiezen tot welke foto- en video-apps toegang hebben via de Photo Picker, ongeacht of die apps de API al dan niet gebruiken.Veel apps hebben toegang tot mediabestanden via de mediawinkel-API. Het systeem indexeert bestanden op type, genaamd media store collections, en houdt een database bij die apps kunnen doorzoeken met behulp van de media store API. Apps die de mediastore-API gebruiken, hoeven geen toestemming te vragen om bestanden waarvan ze eigenaar zijn te lezen of te wijzigen, maar ze moeten wel toestemming krijgen van de gebruiker om toegang te krijgen tot bestanden die eigendom zijn van andere apps.
Vanaf Android 10 moesten apps die gericht zijn op API-niveau 29 of hoger de READ_EXTERNAL_STORAGE toestemming van de gebruiker voordat ze de mediastore-API konden gebruiken om toegang te krijgen tot bestanden eigendom van andere apps. In Android 13 was de READ_EXTERNAL_STORAGE-machtiging opgesplitst in drie verschillende machtigingen (READ_MEDIA_AUDIO, READ_MEDIA_VIDEO en READ_MEDIA_IMAGES) die elk verleent een app gericht op API-niveau 33 de mogelijkheid om de mediastore-API te gebruiken voor toegang tot respectievelijk audio-, video- en afbeeldingsbestanden die eigendom zijn van anderen apps.
Android 14 verandert de machtigingen voor mediatoegang opnieuw door READ_MEDIA_VIDEO, READ_MEDIA_IMAGES en ACCESS_MEDIA_LOCATION te combineren in een nieuwe machtiging genaamd READ_MEDIA_VISUAL_USER_SELECTED. Met deze toestemming kan een app die zich richt op API-niveau 34 "door de gebruiker geselecteerde afbeeldings- en videobestanden uit gedeelde opslag lezen", aldus de beschrijving. Android 14 kan dit nieuwe gedrag echter met terugwerkende kracht toepassen op bestaande apps die gericht zijn op API-niveau 33 (d.w.z. Android 13) en vraag READ_MEDIA_VIDEO of READ_MEDIA_IMAGES aan.
Wanneer een app gericht op API-niveau 33 het runtime-toestemmingsvenster activeert om de gebruiker te vragen om READ_MEDIA_VIDEO of READ_MEDIA_IMAGES (of beide) te verlenen, kan Android 14 een nieuw item invoegen in de toestemmingsdialoogvenster met de tekst 'Selecteer foto's'. Door op dit item te tikken, wordt een nieuwe versie van de Photo Picker gestart waarmee de gebruiker kan selecteren welke foto's of video's ze de app toegang willen verlenen naar. De app heeft vervolgens alleen toegang tot die media-items die de gebruiker specifiek heeft geselecteerd, tenzij de gebruiker daarvoor kiest breid de toegang uit tot extra media-items of verleen de app toegang tot de volledige mediawinkelcollecties voor afbeeldingen en videos.
Dit item in het toestemmingsdialoogvenster wordt niet standaard weergegeven in Android 14 DP1, omdat de zichtbaarheid wordt beperkt door een ontwikkelaarsvlag die ik moest wisselen. Als deze functie echter wordt vrijgegeven, is dit een grote overwinning voor de privacy, omdat het betekent dat gebruikers altijd de mogelijkheid hebben om te beslissen tot welke foto's of video's een app toegang moet hebben.
Veel te weinig apps gebruiken de Photo Picker API zoals die is, wat Google ertoe aanzet ermee te experimenteren het onderscheppen van een bestaande intentie die apps gebruiken om de systeembestandskiezer te starten, zodat ze in plaats daarvan de Fotokiezer starten. Hoewel de Photo Picker enkele tekortkomingen heeft, zoals het nog niet tonen van bestanden van cloudmediaproviders (misschien zal dit binnenkort gebeuren met extensie SDK versie 5!) en toont alleen bepaalde albums op het apparaat is het beter dan de oude systeembestandskiezer en heeft zeker de voorkeur boven elke app die toegang heeft tot elke foto en video in de galerij.
Ontwikkelaars die geïnteresseerd zijn in het implementeren van de Photo Picker API moeten upgraden naar de nieuwste versie van de Jetpack Activity-bibliotheek, die zorgt voor het aanroepen van de achterwaarts compatibele versie die wordt geleverd via Google Play Services op Android 4.4-Android 10 of de door het framework geleverde versie die wordt geleverd via de MediaProvider Mainline-module.