Photo Picker var et valgfritt API for apper som ønsket å få tilgang til galleriet ditt i Android 13, men det begynner å bli noe obligatorisk i Android 14.
En av høydepunktene til Android 13 er Photo Picker, en ny systemkomponent som lar brukere velge hvilke bilder og videoer de vil gi en app tilgang til. Apper trenger ikke å be om noen tillatelser for å få tilgang til elementer brukeren velger via bildevelgeren, noe som gjør det til en personvernbevarende måte å dele bilder og videoer med apper. Systemfilvelgeren som har eksistert siden Android 4.4 tilbyr mer funksjonalitet enn Photo Picker, men brukergrensesnittet er datert i sammenligning.
Bildevelgeren (og systemfilvelgeren før den) beskytter personvernet ditt ved å la deg begrense hvilke bilder og videoer en app har tilgang til. Dessverre støtter mange apper ikke Photo Picker, selv om en bakoverkompatibel versjon av den er tilgjengelig for Android 4.4+. Apper må spesifikt påkalle bildevelgeren ved å bruke en hensikt, men mange apper velger å ikke bruke den av en eller annen grunn. Heldigvis spiller det kanskje ingen rolle lenger
Android 14, som tester en måte for brukere å velge hvilke bilder og videoer apper kan få tilgang til gjennom bildevelgeren uavhengig av om disse appene faktisk bruker API-en eller ikke.Mange apper får tilgang til mediefiler via Media Store API. Systemet indekserer filer etter deres type, kalt mediebutikksamlinger, og vedlikeholder en database som apper kan søke ved hjelp av mediebutikkens API. Apper som bruker Media Store API trenger ikke å be om tillatelse til å lese eller endre filer de eier, men de må gis tillatelse av brukeren for å få tilgang til filer som eies av andre apper.
Fra og med Android 10 måtte apper som målretter mot API-nivå 29 eller høyere gis READ_EXTERNAL_STORAGE tillatelse fra brukeren før de kunne bruke mediebutikkens API for å få tilgang til filer eid av andre apper. I Android 13 ble READ_EXTERNAL_STORAGE-tillatelsen delt inn i tre forskjellige tillatelser (READ_MEDIA_AUDIO, READ_MEDIA_VIDEO og READ_MEDIA_IMAGES) som hver gir en app som målretter API-nivå 33 muligheten til å bruke Media Store API for å få tilgang til henholdsvis lyd-, video- og bildefiler som eies av andre apper.
Android 14 endrer medietilgangstillatelser igjen ved å kombinere READ_MEDIA_VIDEO, READ_MEDIA_IMAGES og ACCESS_MEDIA_LOCATION til en ny tillatelse kalt READ_MEDIA_VISUAL_USER_SELECTED. Denne tillatelsen lar en app som målretter API-nivå 34 "lese brukervalgte bilde- og videofiler fra delt lagring," i henhold til beskrivelsen. Android 14 kan imidlertid bruke tilbakevirkende kraft denne nye virkemåten på eksisterende apper som er målrettet mot API-nivå 33 (dvs. Android 13) og be om READ_MEDIA_VIDEO eller READ_MEDIA_IMAGES.
Når en app som er målrettet mot API-nivå 33 utløser dialogboksen for kjøretidstillatelser for å be brukeren om å gi dem READ_MEDIA_VIDEO eller READ_MEDIA_IMAGES (eller begge), kan Android 14 sette inn en ny oppføring i tillatelsesdialog som sier "Velg bilder." Ved å trykke på denne oppføringen vil en ny versjon av bildevelgeren startes som lar brukeren velge hvilke bilder eller videoer de vil gi appen tilgang til. Appen har deretter tilgang til bare de medieelementene som brukeren spesifikt har valgt, med mindre brukeren velger det utvide tilgangen til flere medieelementer eller gi appen tilgang til hele mediebutikksamlingene for bilder og videoer.
Denne oppføringen i tillatelsesdialogen vises ikke som standard i Android 14 DP1, siden dens synlighet er lukket av et utviklerflagg som jeg måtte bytte. Hvis denne funksjonen får den utgitt, vil det imidlertid være en stor gevinst for personvernet, siden det betyr at brukere alltid vil ha muligheten til å bestemme hvilke bilder eller videoer en app skal ha tilgang til.
Altfor få apper bruker Photo Picker API som det er, noe som får Google til å eksperimentere med avskjære en eksisterende hensikt som apper bruker for å starte systemfilvelgeren slik at de i stedet starter bildevelgeren. Selv om fotovelgeren har noen mangler, for eksempel å ikke vise filer fra skymedieleverandører ennå (kanskje det snart vil utvidelse SDK versjon 5!) og viser bare enkelte album på enheten er den bedre enn den gamle systemfilvelgeren og er absolutt å foretrekke fremfor alle apper som har tilgang til alle bilder og videoer i galleriet.
Utviklere som er interessert i å implementere Photo Picker API bør oppgradere til den nyeste versjonen av Jetpack Activity-biblioteket, som håndterer oppringing av den bakoverkompatible versjonen som tilbys gjennom Google Play Services på Android 4.4-Android 10 eller rammeverkversjonen levert gjennom MediaProvider Mainline-modulen.