Android 11 implementerer en endring som vil forhindre tredjeparts kameraapper fra å vises i bilde-/videovalghandlinger.
Oppdatering 1 (20/08/2020 @ 18:15 ET): Google har oppdatert utviklerdokumentasjonen for å forklare hvorfor tredjeparts kameraapper på Android 11 ikke er i stand til å svare på implisitte handlinger med bilde/video. Bla til bunnen for mer informasjon. Artikkelen som ble publisert 19. august 2020, er bevart nedenfor.
Android 11 endrer måten apper samhandler med tredjeparts kameraapper på enheten din, noe som forhindrer dem fra å vises i bilde-/videovalg. I eldre versjoner av Android, hvis en app ønsker å la brukere ta et bilde, kan den enten implementere å ta bilder i appen (ved å bruke Androids forskjellige kamera-API-er), eller den kan sende en hensikt som kan håndteres av en dedikert kamera-app for å fange bildet i stedet. Hvis en app bestemmer seg for å gå med det siste alternativet, får brukere på eldre Android-utgivelser en disambigueringsdialog for å velge kameraappen for å ta bildet. Dialogboksen viser generelt alle kameraapper som er installert på brukerens enhet, inkludert tredjeparts kameraapper, så lenge de er skrevet for å svare på visse hensikter. Men med Android 11 vil dialogen bare inkludere forhåndsinstallerte kameraapper, med mindre utviklere spesifikt retter seg mot visse tredjeparts kameraapper.
Endringen betyr effektivt at brukere i de fleste tilfeller må manuelt starte tredjeparts kameraapper når de vil ta et bilde, noe som gjør tredjeparts kameraapper mindre praktiske å bruke. Det vil også få brukere til å skylde på utviklere av tredjeparts kameraapper når brukeren finner ut at favorittkameraappen deres ikke kan startes fra andre apper lenger. Google implementerer denne endringen i Android 11 ved å hindre tredjeparts kameraapper fra å svare på følgende intensjonshandlinger:
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
sier Google at denne endringen er satt på plass i Android 11 for å beskytte personvernet og sikkerheten til brukerne. Selskapet utdyper ikke hvordan, men det er sannsynlig at noen ondsinnede apper har maskert seg som kameraapper for å få tilgang til en brukers bilder. Imidlertid nevner selskapet en løsning for utviklere som vil tillate apper å fortsatt lansere tredjeparts kameraapper. Løsningen krever i hovedsak at utviklere målretter mot en bestemt tredjepartsapp etter eget valg når de sender en hensikt. For eksempel kan utvikleren av en dokumentskanner-app sende en eksplisitt intensjon om å starte Adobe Photoshop-kamera heller enn å sende en implisitt hensikt om å åpne kameravelgeren. Android 11 gjør det slik at utviklere ikke engang kan spørre listen over apper som kan svare på de tre nevnte intensjonshandlinger, noe som betyr at en utvikler på forhånd må vite hvilke tredjeparts kameraapper de vil ha Brukerstøtte.
Kilde: CommonsWare, Android-utviklere
Via: Reddit
Takk til XDA Senior Member AndroidutviklerLB for tipset!
Oppdatering 1: Google sier at denne endringen er for å opprettholde personvernet
Google har oppdatert sin Android 11 atferdsendringer-side med ny informasjon om "mediehensiktshandlinger krever systemets standardkamera"-delen (via The Verge). Endringen, forklarer Google, er "utformet for å sikre at EXIF-posisjonsmetadataene blir korrekt behandlet basert på plasseringstillatelsene definert i app som sender intensjonen." I utgangspunktet er Google bekymret for at apper som ikke har fått eksplisitt posisjonstilgang ennå, får brukere til å åpne kameraapper som ha fått plasseringstilgang, og siden det resulterende bildet som sendes til appen kan inneholde EXIF-plassering metadata, så kan den anropende appen omgå forespørsler om posisjonstilgang ved å lese posisjonsdataene fra bilde. Hvis en app prøver å gjøre dette i Android 11, må den deklareres ACCESS_MEDIA_LOCATION
i tillegg til ACCESS_COARSE_LOCATION
eller ACCESS_FINE_LOCATION
tillatelser for å lese EXIF-lokasjonsmetadata. (Av notatet, Google stengte av enda et smutthull for plassering i Android 10 ved å kreve at apper ber om ACCESS_MEDIA_LOCATION
tillatelse hvis en app prøver å hente uredigerte EXIF-metadata fra bilder.)
Selv om denne atferdsendringen vil påvirke appens evne til å starte den brukerdefinerte standard kameraappen på grunn av hvor gammel og ofte brukt 3 nevnte hensiktshandlinger er, bemerker Google at endringen ikke påvirker alle intensjonshandlinger som kan starte den brukerdefinerte standard kameraappen, som f.eks. som: android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA
, android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE
, eller android.provider.MediaStore.INTENT_ACTION_VIDEO_CAMERA
. Disse intensjonene tjener imidlertid ikke samme formål, siden de bare starter standardkameraappen i stedet for å tillate at et bilde sendes tilbake til den oppringende appen.