W systemie Android 11 wprowadzono zmianę, która zapobiegnie pojawianiu się aplikacji aparatu innych firm w działaniach związanych z wybieraniem zdjęć/wideo.
Aktualizacja 1 (20.08.2020 o 18:15 ET): Firma Google zaktualizowała dokumentację dla programistów, aby wyjaśnić, dlaczego aplikacje aparatu innych firm w systemie Android 11 nie są w stanie reagować na ukryte działania związane z obrazem/wideo. Przewiń w dół, aby uzyskać więcej informacji. Artykuł opublikowany 19 sierpnia 2020 r. znajduje się poniżej.
Android 11 zmienia sposób interakcji aplikacji aplikacje aparatu innych firm na Twoim urządzeniu, co zapobiegnie ich wyświetlaniu w zamiarach wybierania zdjęć/wideo. W starszych wersjach Androida, jeśli aplikacja chce umożliwić użytkownikom przechwytywanie obrazu, może albo wdrożyć robienie zdjęć w aplikacji (przy użyciu różnych interfejsów API aparatu w systemie Android) lub może wysłać intencję, którą może obsłużyć dedykowana aplikacja aparatu w celu przechwycenia obrazu Zamiast. Jeśli aplikacja zdecyduje się skorzystać z tej drugiej opcji, użytkownikom starszych wersji Androida wyświetli się okno dialogowe z ujednoznacznieniem, w którym mogą wybrać wybraną aplikację aparatu do przechwytywania obrazu. W oknie dialogowym zazwyczaj wyświetlane są wszystkie aplikacje aparatu zainstalowane na urządzeniu użytkownika, w tym aplikacje aparatu innych firm, o ile zostały napisane z myślą o określonych celach. Jednak w systemie Android 11 okno dialogowe będzie zawierać tylko fabrycznie zainstalowane aplikacje aparatu, chyba że programiści specjalnie opracują określone aplikacje aparatu innych firm.
Zmiana faktycznie oznacza, że w większości przypadków użytkownicy będą musieli ręcznie uruchamiać aplikacje aparatu innych firm, gdy chcą zrobić zdjęcie, co sprawi, że korzystanie z aplikacji aparatu innych firm będzie mniej wygodne. Spowoduje to również, że użytkownicy będą obwiniać twórców aplikacji aparatu innych firm, gdy dowiedzą się, że ich ulubionej aplikacji aparatu nie można już uruchomić z innych aplikacji. Google wdraża tę zmianę w systemie Android 11, uniemożliwiając aplikacjom aparatu innych firm reagowanie na następujące zamierzone działania:
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
Google twierdzi że zmiana ta została wprowadzona w systemie Android 11 w celu ochrony prywatności i bezpieczeństwa jego użytkowników. Firma nie opisuje szczegółowo, w jaki sposób, ale jest prawdopodobne, że niektóre złośliwe aplikacje podszywają się pod aplikacje aparatu, aby uzyskać dostęp do zdjęć użytkownika. Firma wspomina jednak o obejściu dla programistów, które umożliwi aplikacjom nadal uruchamianie aplikacji aparatu innych firm. To obejście zasadniczo wymaga od programistów, aby podczas wysyłania intencji kierowali się na wybraną przez siebie aplikację innej firmy. Na przykład twórca aplikacji do skanowania dokumentów może wysłać wyraźną prośbę o uruchomienie Aparat Adobe Photoshop zamiast wysyłać ukryty zamiar otwarcia selektora kamer. Android 11 sprawia, że programiści nie mogą nawet sprawdzać listy aplikacji, które mogą odpowiedzieć na 3 wyżej wymienione zamierzone działania, co oznacza, że programista będzie musiał z wyprzedzeniem wiedzieć, z jakich aplikacji aparatu innych firm chce korzystać wsparcie.
Źródło: CommonsWare, Programiści Androida
Przez: Reddit
Dziękujemy starszemu członkowi XDA Programista AndroidLB za wskazówkę!
Aktualizacja 1: Google twierdzi, że ta zmiana ma na celu zachowanie prywatności
Google zaktualizowało swoją stronę zmian w zachowaniu Androida 11, dodając nowe informacje na temat „działania związane z multimediami wymagają domyślnej kamery systemowej"sekcja (przez Krawędź). Google wyjaśnia, że zmiana „ma na celu zapewnienie prawidłowego przetwarzania metadanych EXIF o lokalizacji w oparciu o uprawnienia do lokalizacji określone w Aplikacja wysyła zamiar.” Zasadniczo Google obawia się, że aplikacje, którym nie przyznano jeszcze wyraźnego dostępu do lokalizacji, powodują, że użytkownicy otwierają aplikacje aparatu, które Posiadać uzyskał dostęp do lokalizacji, a powstałe zdjęcie przesłane do aplikacji może zawierać lokalizację EXIF metadanych, wówczas aplikacja wywołująca może ominąć żądanie dostępu do lokalizacji, odczytując dane o lokalizacji z pliku zdjęcie. Jeśli aplikacja spróbuje to zrobić w systemie Android 11, będzie musiała to zadeklarować ACCESS_MEDIA_LOCATION
jak również ACCESS_COARSE_LOCATION
Lub ACCESS_FINE_LOCATION
uprawnienia do odczytu metadanych lokalizacji EXIF. (Nutowy, Google załatało kolejną lukę w dostępie do lokalizacji w systemie Android 10, wymagając od aplikacji żądania ACCESS_MEDIA_LOCATION
pozwolenie, jeśli aplikacja spróbuje pobrać ze zdjęć niezredagowane metadane EXIF.)
Chociaż ta zmiana zachowania będzie miała wpływ na możliwość uruchamiania przez aplikacje domyślnej aplikacji aparatu zdefiniowanej przez użytkownika ze względu na wiek i częstość używania 3 wyżej wymienione działania zamierzone, Google zauważa, że zmiana nie wpływa na wszystkie zamierzone działania, które mogą uruchomić zdefiniowaną przez użytkownika domyślną aplikację aparatu, np. Jak: android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA
, android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE
, Lub android.provider.MediaStore.INTENT_ACTION_VIDEO_CAMERA
. Te intencje nie służą jednak temu samemu celowi, ponieważ uruchamiają jedynie domyślną aplikację aparatu, a nie umożliwiają odesłanie obrazu z powrotem do aplikacji wywołującej.