[Uppdatering: Mer information] Android 11 blockerar kameraappar från tredje part från att visas i bild-/videoval

Android 11 implementerar en förändring som kommer att förhindra att kameraappar från tredje part visas i bild-/videovalsåtgärder.

Uppdatering 1 (2020-08-20 @ 18:15 ET): Google har uppdaterat sin utvecklardokumentation för att förklara varför kameraappar från tredje part på Android 11 inte kan svara på implicita bild-/videoavsiktsåtgärder. Scrolla till botten för mer information. Artikeln som publicerades den 19 augusti 2020 finns bevarad nedan.

Android 11 förändrar hur appar interagerar med kameraappar från tredje part på din enhet, vilket kommer att förhindra att de visas i bild-/videoval. I äldre versioner av Android, om en app vill låta användare ta en bild kan den antingen implementera att ta bilder i appen (med Androids olika kamera-API: er) eller så kan den skicka en avsikt som kan hanteras av en dedikerad kameraapp för att fånga bilden istället. Om en app bestämmer sig för att välja det senare alternativet, presenteras användare på äldre Android-versioner med en disambigueringsdialog för att välja den kameraapp de väljer för att ta bilden. Dialogrutan visar i allmänhet alla kameraappar installerade på användarens enhet, inklusive kameraappar från tredje part, så länge de är skrivna för att svara på vissa avsikter. Men med Android 11 kommer dialogrutan endast att inkludera förinstallerade kameraappar i lager, såvida inte utvecklare specifikt riktar sig mot vissa kameraappar från tredje part.

Förändringen innebär i praktiken att användare i de flesta fall måste manuellt starta kameraappar från tredje part när de vill ta ett foto, vilket gör kameraappar från tredje part mindre bekväma att använda. Det kommer också att få användare att skylla på utvecklare av kameraappar från tredje part när användaren får reda på att deras favoritkameraapp inte längre kan startas från andra appar. Google implementerar denna förändring i Android 11 genom att förhindra kameraappar från tredje part från att svara på följande avsiktsåtgärder:

  • android.media.action.VIDEO_CAPTURE
  • android.media.action.IMAGE_CAPTURE
  • android.media.action.IMAGE_CAPTURE_SECURE

säger Google att denna förändring har införts i Android 11 för att skydda användarnas integritet och säkerhet. Företaget går inte närmare in på hur, men det är troligt att vissa skadliga appar har maskerat sig som kameraappar för att få tillgång till en användares bilder. Företaget nämner dock en lösning för utvecklare som gör att appar fortfarande kan lansera kameraappar från tredje part. Lösningen kräver i huvudsak att utvecklare riktar in sig på en specifik tredjepartsapp efter eget val när de skickar en avsikt. Till exempel kan utvecklaren av en dokumentskannerapp skicka en uttrycklig avsikt att starta Adobe Photoshop kamera snarare än att skicka en underförstådd avsikt att öppna kameraväljaren. Android 11 gör det så att utvecklare inte ens kan fråga listan över appar som kan svara på de tre ovannämnda avsiktsåtgärder, vilket innebär att en utvecklare i förväg måste veta vilka kameraappar från tredje part de vill Stöd.

Källa: CommonsWare, Android-utvecklare

Via: Reddit

Tack till XDA Senior Member AndroidDeveloperLB för tipset!

Uppdatering 1: Google säger att denna förändring är för att upprätthålla integriteten

Google har uppdaterat sin Android 11 beteendeändringssida med ny information om "medieavsiktsåtgärder kräver systemets standardkamera" avsnitt (via Gränsen). Ändringen, förklarar Google, är "designad för att säkerställa att EXIF-platsmetadata bearbetas korrekt baserat på platsbehörigheterna som definieras i app som skickar avsikten." I grund och botten är Google oroad över att appar som ännu inte har beviljats ​​explicit platsåtkomst får användare att öppna kameraappar som ha beviljats ​​platsåtkomst, och eftersom det resulterande fotot som skickas till appen kan innehålla EXIF-plats metadata, då kan den anropande appen kringgå begäran om platsåtkomst genom att läsa platsdata från Foto. Om en app försöker göra detta i Android 11 måste den deklareras ACCESS_MEDIA_LOCATION såväl som ACCESS_COARSE_LOCATION eller ACCESS_FINE_LOCATION behörigheter för att läsa EXIF-platsmetadata. (Observera, Google stängde av ytterligare ett kryphål för platsåtkomst i Android 10 genom att kräva att appar begär ACCESS_MEDIA_LOCATION behörighet om en app försöker hämta oredagerad EXIF-metadata från foton.)

Även om denna beteendeförändring kommer att påverka apparnas förmåga att starta den användardefinierade standardkameraappen på grund av hur gammal och ofta använd 3 ovannämnda avsiktsåtgärder är, noterar Google att ändringen inte påverkar alla avsiktsåtgärder som kan starta den användardefinierade standardkameraappen, t.ex. 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. Dessa avsikter tjänar dock inte samma syfte, eftersom de bara startar standardkameraappen istället för att tillåta att en bild skickas tillbaka till den anropande appen.