Android 11 rakendab muudatust, mis takistab kolmandate osapoolte kaamerarakenduste ilmumist pildi/video valimise kavatsuste toimingutes.
Värskendus 1 (20.08.2020 kell 18:15 ET): Google on värskendanud oma arendaja dokumentatsiooni, et selgitada, miks kolmanda osapoole kaamerarakendused operatsioonisüsteemis Android 11 ei suuda reageerida kaudsetele pildi/video kavatsustoimingutele. Lisateabe saamiseks kerige alla. Allpool on säilinud artikkel 19. augustil 2020 avaldatud kujul.
Android 11 muudab seda, kuidas rakendused nendega suhtlevad kolmanda osapoole kaamerarakendused teie seadmes, mis takistab nende ilmumist piltide/videote valimise kavatsustesse. Kui rakendus soovib Androidi vanemates versioonides lubada kasutajatel pilti jäädvustada, võib see rakenduses pildistada (kasutades Androidi erinevaid kaamera API-sid) või see võib saata kavatsuse, mida saab pildi jäädvustamiseks hallata spetsiaalne kaamerarakendus selle asemel. Kui rakendus otsustab kasutada viimast valikut, kuvatakse vanemate Androidi versioonide kasutajatele täpsustusdialoog, et valida pildi jäädvustamiseks valitud kaamerarakendus. Dialoogiaknas kuvatakse üldiselt kõik kasutaja seadmesse installitud kaamerarakendused, sealhulgas kolmanda osapoole kaamerarakendused, kui need on kirjutatud teatud eesmärkidele reageerimiseks. Android 11 puhul sisaldab dialoog siiski ainult eelinstallitud kaamerarakendusi, välja arvatud juhul, kui arendajad sihivad konkreetselt teatud kolmanda osapoole kaamerarakendusi.
Muudatus tähendab sisuliselt seda, et enamikul juhtudel peavad kasutajad foto tegemiseks käsitsi käivitama kolmanda osapoole kaamerarakendused, mis muudab kolmandate osapoolte kaamerarakenduste kasutamise vähem mugavaks. Samuti paneb kasutajad süüdistama kolmandate osapoolte kaamerarakenduste arendajaid, kui kasutaja saab teada, et tema lemmikkaamerarakendust ei saa enam teistest rakendustest käivitada. Google rakendab seda muudatust operatsioonisüsteemis Android 11, takistades kolmandate osapoolte kaamerarakendustel reageerida järgmistele kavatsustoimingutele.
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
Google ütleb et see muudatus on Android 11-s paika pandud, et kaitsta selle kasutajate privaatsust ja turvalisust. Ettevõte ei täpsusta, kuidas, kuid on tõenäoline, et mõned pahatahtlikud rakendused on maskeerunud kaamerarakendusteks, et pääseda ligi kasutaja fotodele. Siiski mainib ettevõte arendajatele mõeldud lahendust, mis võimaldab rakendustel siiski käivitada kolmandate osapoolte kaamerarakendusi. Lahendus nõuab sisuliselt, et arendajad sihtiksid kavatsuse saatmisel konkreetset kolmanda osapoole rakendust. Näiteks võib dokumendiskanneri rakenduse arendaja saata selgesõnalise kavatsuse käivitada Adobe Photoshopi kaamera selle asemel, et saada kaudne kavatsus kaameravalija avamiseks. Android 11 muudab selle nii, et arendajad ei saa isegi küsida nende rakenduste loendit, mis suudavad vastata kolmele eelnimetatule kavatsuslikud toimingud, mis tähendab, et arendaja peab eelnevalt teadma, milliseid kolmanda osapoole kaamerarakendusi ta soovib toetus.
Allikas: CommonsWare, Androidi arendajad
Läbi: Reddit
Aitäh XDA vanemliikmele AndroidDeveloperLB jootraha eest!
Värskendus 1: Google ütleb, et see muudatus on privaatsuse säilitamiseks
Google on värskendanud oma Android 11 käitumise muutuste lehte uue teabegameedia kavatsuste toimimiseks on vaja süsteemi vaikekaamerat" jaotis (via The Verge). Google selgitab, et muudatuse eesmärk on tagada, et EXIF-i asukoha metaandmeid töödeldakse õigesti, tuginedes asukohalubadele, mis on määratletud rakendus saadab kavatsuse." Põhimõtteliselt on Google mures selle pärast, et rakendused, millele pole veel selget asukohajuurdepääsu antud, panevad kasutajad avama kaamerarakendusi, mis on saanud asukohale juurdepääsu ja kuna tulemuseks olev foto, mis rakendusele edastatakse, võib sisaldada EXIF-i asukohta metaandmeid, siis saab helistav rakendus asukohale juurdepääsu taotlemisest mööda minna, lugedes asukohaandmed rakendusest foto. Kui rakendus proovib seda operatsioonisüsteemis Android 11 teha, peab see deklareerima ACCESS_MEDIA_LOCATION
sama hästi kui ACCESS_COARSE_LOCATION
või ACCESS_FINE_LOCATION
õigused EXIF-i asukoha metaandmete lugemiseks. (Märkus, Google sulges veel ühe asukohale juurdepääsu lünka operatsioonisüsteemis Android 10, nõudes, et rakendused taotleksid ACCESS_MEDIA_LOCATION
luba, kui rakendus proovib fotodelt tuua redigeerimata EXIF-i metaandmeid.)
Kuigi see käitumise muudatus mõjutab rakenduste võimet käivitada kasutaja määratud kaamera vaikerakenduse, kuna see on vana ja sageli kasutatud 3 Google märgib, et muudatus ei mõjuta kõiki kavatsustoiminguid, mis võivad käivitada kasutaja määratud kaamera vaikerakenduse, näiteks nagu: android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA
, android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE
, või android.provider.MediaStore.INTENT_ACTION_VIDEO_CAMERA
. Need kavatsused ei teeni aga sama eesmärki, kuna need käivitavad ainult kaamera vaikerakenduse, mitte ei võimalda pilti helistavale rakendusele tagasi saata.