Android 11 implementuje změnu, která zabrání tomu, aby se aplikace pro fotoaparáty třetích stran objevovaly v akcích záměru pro výběr obrázku/videa.
Aktualizace 1 (20. 8. 2020, 18:15 ET): Společnost Google aktualizovala svou dokumentaci pro vývojáře, aby vysvětlila, proč aplikace fotoaparátů třetích stran v systému Android 11 nejsou schopny reagovat na implicitní akce záměru obrazu/videa. Pro více informací přejděte dolů. Článek ve znění zveřejněném 19. srpna 2020 je zachován níže.
Android 11 mění způsob interakce aplikací aplikace fotoaparátů třetích stran na vašem zařízení, což zabrání jejich zobrazení v záměrech pro výběr obrázku/videa. Ve starších verzích Androidu, pokud chce aplikace uživatelům umožnit pořídit obrázek, může buď implementovat pořizování snímků v aplikaci (pomocí různých rozhraní API pro fotoaparáty systému Android) nebo může odeslat záměr, který lze zpracovat pomocí speciální aplikace pro fotoaparát k zachycení snímku namísto. Pokud se aplikace rozhodne pro druhou možnost, uživatelům na starších verzích Androidu se zobrazí jednoznačné dialogové okno, ve kterém si mohou vybrat aplikaci fotoaparátu pro pořízení snímku. Dialogové okno obecně zobrazuje všechny aplikace fotoaparátu nainstalované v zařízení uživatele, včetně aplikací fotoaparátů třetích stran, pokud jsou napsány tak, aby reagovaly na určité záměry. V systému Android 11 však bude dialog obsahovat pouze předinstalované aplikace pro fotoaparáty, pokud se vývojáři konkrétně nezaměřují na určité aplikace pro fotoaparáty třetích stran.
Tato změna ve skutečnosti znamená, že ve většině případů budou uživatelé muset ručně spouštět aplikace pro fotoaparáty třetích stran, když chtějí pořídit fotografii, takže používání aplikací pro fotoaparáty třetích stran bude méně pohodlné. Uživatelé také budou vinit vývojáře aplikací pro fotoaparáty třetích stran, když uživatel zjistí, že jeho oblíbenou aplikaci pro fotoaparát již nelze spustit z jiných aplikací. Google implementuje tuto změnu v Androidu 11 tím, že zabrání aplikacím fotoaparátu třetích stran reagovat na následující záměrné akce:
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
Google říká že tato změna byla zavedena v systému Android 11 s cílem chránit soukromí a bezpečnost jeho uživatelů. Společnost neupřesňuje jak, ale je pravděpodobné, že některé škodlivé aplikace se maskovaly jako aplikace fotoaparátu, aby získaly přístup k fotkám uživatele. Společnost však zmiňuje řešení pro vývojáře, které umožní aplikacím stále spouštět aplikace fotoaparátu třetích stran. Řešení v podstatě vyžaduje, aby se vývojáři při odesílání záměru zaměřili na konkrétní aplikaci třetí strany podle vlastního výběru. Například vývojář aplikace pro skenování dokumentů může poslat výslovný záměr spustit Fotoaparát Adobe Photoshop místo odeslání implicitního záměru otevřít výběr kamery. Android 11 umožňuje vývojářům ani dotazovat se na seznam aplikací, které mohou reagovat na výše uvedené 3 záměrné akce, což znamená, že vývojář bude muset předem vědět, které aplikace fotoaparátu třetích stran chtějí Podpěra, podpora.
Zdroj: CommonsWare, Vývojáři pro Android
Přes: Reddit
Díky XDA Senior Member Android DeveloperLB za tip!
Aktualizace 1: Google říká, že tato změna má zachovat soukromí
Google aktualizoval svou stránku se změnami chování v systému Android 11 o nové informace o „akce mediálního záměru vyžadují výchozí kameru systémusekce "(přes The Verge). Tato změna, vysvětluje Google, je „navržena tak, aby zajistila správné zpracování metadat o poloze EXIF na základě oprávnění k umístění definovaných v aplikace odesílající záměr." Google se v zásadě obává, že aplikace, kterým dosud nebyl udělen explicitní přístup k poloze, nutí uživatele otevírat aplikace fotoaparátu, které mít byl udělen přístup k poloze, a protože výsledná fotografie předaná do aplikace může obsahovat polohu EXIF metadata, pak může volající aplikace obejít požadavek na přístup k poloze načtením údajů o poloze z fotografie. Pokud se o to aplikace pokusí v systému Android 11, bude to muset deklarovat ACCESS_MEDIA_LOCATION
jakož i ACCESS_COARSE_LOCATION
nebo ACCESS_FINE_LOCATION
oprávnění ke čtení metadat umístění EXIF. (za poznámku, Google uzavřel další mezeru v přístupu k poloze v systému Android 10 tím, že aplikace vyžaduje požadavek ACCESS_MEDIA_LOCATION
povolení, pokud se aplikace pokusí získat nereagovaná metadata EXIF z fotografií.)
I když tato změna chování ovlivní schopnost aplikací spouštět uživatelem definovanou výchozí aplikaci fotoaparátu kvůli tomu, jak jsou staré a často používané 3 výše uvedené akce záměru jsou, Google poznamenává, že změna neovlivňuje všechny akce záměru, které mohou spustit uživatelem definovanou výchozí aplikaci fotoaparátu, např. tak jako: android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA
, android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE
nebo android.provider.MediaStore.INTENT_ACTION_VIDEO_CAMERA
. Tyto záměry však neslouží stejnému účelu, protože spouštějí pouze výchozí aplikaci fotoaparátu, místo aby umožňovaly odeslání obrázku zpět do aplikace pro volání.