В Android 11 реалізовано зміни, які запобігатимуть появі сторонніх додатків камери під час вибору зображень/відео.
Оновлення 1 (20.08.2020 о 18:15 за східним часом): Google оновив свою документацію для розробників, щоб пояснити, чому програми сторонніх розробників камери на Android 11 не можуть реагувати на неявні дії щодо зображення/відео. Прокрутіть униз, щоб дізнатися більше. Стаття, опублікована 19 серпня 2020 року, збережена нижче.
Android 11 змінює спосіб взаємодії додатків сторонні програми камери на вашому пристрої, що запобіжить їх відображенню в намірах вибору зображень/відео. У старих версіях Android, якщо програма хоче дозволити користувачам знімати зображення, вона може реалізувати фотографування в програмі (за допомогою різних API камери Android) або він може надіслати намір, який може обробити спеціальна програма камери для захоплення зображення замість цього. Якщо програма вирішить скористатися останнім варіантом, користувачам старіших версій Android буде запропоновано діалогове вікно усунення неоднозначностей для вибору програми камери для зйомки зображення. Діалогове вікно зазвичай показує всі програми камери, встановлені на пристрої користувача, включно зі сторонніми програмами камери, якщо вони написані для відповіді на певні наміри. Проте в Android 11 діалогове вікно включатиме лише попередньо встановлені стандартні додатки камери, якщо тільки розробники не націлені на певні сторонні програми камери.
Ця зміна фактично означає, що в більшості випадків користувачам доведеться вручну запускати сторонні додатки камери, коли вони хочуть зробити фото, що робить використання сторонніх додатків камер менш зручними. Це також змусить користувачів звинувачувати розробників сторонніх додатків для камери, коли користувач дізнається, що їх улюблений додаток для камери більше не можна запускати з інших додатків. Google реалізує цю зміну в Android 11, забороняючи додаткам камери сторонніх розробників реагувати на такі дії:
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
Google каже що цю зміну було внесено в Android 11 для захисту конфіденційності та безпеки користувачів. Компанія не уточнює, як це зробити, але ймовірно, що деякі шкідливі програми маскуються під програми для камери, щоб отримати доступ до фотографій користувача. Однак компанія згадує обхідний шлях для розробників, який дозволить додаткам все одно запускати сторонні додатки камери. Обхідний шлях по суті вимагає від розробників націлитися на певну сторонню програму за власним вибором під час надсилання наміру. Наприклад, розробник програми для сканування документів може надіслати явний намір запуску Камера Adobe Photoshop а не надсилати неявний намір відкрити засіб вибору камери. Android 11 робить так, що розробники не можуть навіть запитувати список програм, які можуть відповідати на 3 вищезазначені Intent Actions, що означає, що розробник повинен заздалегідь знати, які сторонні додатки камери йому потрібні підтримка.
Джерело: CommonsWare, Розробники Android
Через: Reddit
Дякуємо старшому члену XDA AndroidDeveloperLB за чайові!
Оновлення 1: Google каже, що ця зміна спрямована на збереження конфіденційності
Google оновив сторінку змін у поведінці Android 11, додавши нову інформацію про "Для дій медіа-намірів потрібна системна камера за замовчуванням" (через The Verge). Зміна, як пояснює Google, «створена для того, щоб забезпечити правильну обробку метаданих розташування EXIF на основі дозволів на розташування, визначених у По суті, Google стурбована тим, що програми, яким ще не надано явний доступ до місцезнаходження, змушують користувачів відкривати програми камери, які мати отримав доступ до місцезнаходження, і оскільки отримана фотографія, яка передається до програми, може містити EXIF-місцезнаходження метаданих, то програма, що викликає, може обійти запит доступу до місцезнаходження, зчитуючи дані про місцезнаходження з фото. Якщо програма намагається зробити це в Android 11, їй потрібно буде оголосити ACCESS_MEDIA_LOCATION
так добре як ACCESS_COARSE_LOCATION
або ACCESS_FINE_LOCATION
дозволи для читання метаданих розташування EXIF. (Зверніть увагу, Google усунув ще одну лазівку в доступі до місцезнаходження в Android 10, вимагаючи від програм запиту ACCESS_MEDIA_LOCATION
дозвіл, якщо програма намагається отримати невідредаговані метадані EXIF із фотографій.)
Хоча ця зміна поведінки вплине на здатність програм запускати визначену користувачем програму камери за замовчуванням через те, наскільки стара та часто використовувана 3 Google зазначає, що ця зміна не впливає на всі дії намірів, які можуть запускати визначену користувачем програму камери за умовчанням, наприклад як: android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA
, android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE
, або android.provider.MediaStore.INTENT_ACTION_VIDEO_CAMERA
. Однак ці наміри не служать тій самій меті, оскільки вони лише запускають програму камери за замовчуванням, а не дозволяють надсилати зображення до програми, що викликає.