Android 11 rammer tredjeparts kamera-apps hårdt

android 11 dev preview
Android jagtede tidligere det mantra, at udviklere har lov til at tænke ud af boksen, så længe de kan kode det, men tingene har ændret sig gennem årene, efterhånden som sikkerhed og privatliv har fået højere prioriteter. Hver større opdatering i det sidste årti har sat en stopper for visse funktioner eller tilføjet begrænsninger i kampen om at beskytte brugere, men visse funktions-ofring synes at være gået over-the-top.

Med ankomsten af Android 11 kommer en begrænsning de fleste android-brugere nok vil have svært ved at acceptere, idet udviklerne denne gang fjerner muligheden for bruge og vælge tredjeparts kamera-apps til at tage billeder eller videoer på vegne af andre apps, hvilket tvinger brugerne til kun at sætte deres lid på den indbyggede kamera-app.

Før Android 11: Lad os sige, at du skal tage et billede af din bil for at sælge gennem den gennem auktions-app. Hvis aktions-appen ikke er bygget til fotografering, valgte udvikleren at lade det være op til en brugeren selv at vælge foretrukne kamera-app. Dette er hvor systemet kommer i spil. Udviklere opretter blot en anmodning med et par kriterier, og Android vil bede brugerne om at vælge fra en liste over installerede apps til at udføre opgaven.

Med ankomsten af Android 11: Nu tyder det på Google tager en drastisk ændring i spil med Android 11. Med apps, der beder om fotos eller videoe-funktionalitet, vil tre specifikke formål ophører med at virke, som de plejede at gøre, herunder: VIDEO_CAPTURE, IMAGE_CAPTURE og IMAGE_CAPTURE_SECURE. Android 11 leverer nu automatisk den forinstallerede kamera-app til at udføre disse handlinger uden at søge efter andre apps for at udfylde rollen.

Fra Android 11 er det kun forinstallerede systemkamera-apps, der kan reagere på følgende hensigtsmæssige handlinger:

- android.media.action.VIDEO_CAPTURE

- android.media.action.IMAGE_CAPTURE

- android.media.action.IMAGE_CAPTURE_SECURE

Hvis der er mere end én forudinstalleret systemkamera-app, viser systemet en dialogboks, hvor brugeren kan vælge en app. Hvis du ønsker, at din app skal bruge en bestemt tredjeparts kamera-app til at tage billeder eller videoer på appens vegne, kan du registrere disse formål eksplicit ved at indstille et pakkenavn eller -komponent til formålet.

Ikke alene tager Android 11 friheden til automatisk at starte den forudinstallerede kamera-app, når der anmodes om det, systemet forhindrer også, at appudviklere nemt leverer deres egen interface for at simulere den samme funktionalitet. 

Som Mark Murphy fra CommonsWare påpeger, ordinerer Google en løsning for udviklere, selvom denne ikke kendes som værende meget nyttigt. Dokumentationen tilrådes eksplicit at kontrollere for installerede kamera-apps ved hjælp af deres pakkenavne - hvilket betyder, at udviklere bliver nødt til at vælge foretrukne apps forud for brugen - og sende brugere til disse apps direkte. Der er selvfølgelig andre måder at få muligheder uden at identificere alle pakkenavne, som at få en liste over alle apps og derefter manuelt søge efter hensigtsfiltre, men dette virker som en overdreven komplikation.

Den nye Android adfærd håndhæves i den aktuelle Android 11-betaversion, og det vil ske med alle apps, uanset om de er målrettet mod API 30 eller noget lavere. Vi ved endnu ikke, om Android CTS (Compatibility Test Suite) kræver denne håndtering, eller om OEM'er vil have tilladelse til at ændre den tilbage til de tidligere regler, men det er sandsynligvis, at dette vil blive standarden fremover – ØV!