Android 14 дозволить вам обмежити доступ до фотографій, які програми можуть отримати, навіть якщо вони не використовують Photo Picker

Інструмент вибору фотографій був додатковим API для програм, які хотіли отримати доступ до вашої галереї в Android 13, але в Android 14 він став дещо обов’язковим.

Однією з основних функцій Android 13 є Photo Picker, новий системний компонент, який дозволяє користувачам вибирати, до яких фотографій і відео надавати доступ програмі. Додаткам не потрібно запитувати жодних дозволів, щоб отримати доступ до елементів, які користувач вибирає за допомогою засобу вибору фотографій, що робить його конфіденційним способом обмінюватися фотографіями та відео з додатками. Засіб вибору системних файлів, який існує з Android 4.4, пропонує більше функціональних можливостей, ніж засіб вибору фотографій, але його інтерфейс користувача застарів.

Засіб вибору фотографій (і засіб вибору системних файлів до нього) захищає вашу конфіденційність, дозволяючи обмежувати, до яких фотографій і відео програма має доступ. На жаль, багато програм не підтримують Photo Picker, навіть якщо його версія із зворотною сумісністю доступна для Android 4.4+. Програми мають спеціально викликати засіб вибору фотографій, використовуючи намір, але багато програм вирішують не використовувати його з тих чи інших причин. На щастя, це може вже не мати значення

Android 14, яка тестує спосіб, за допомогою якого користувачі можуть вибирати, до яких фотографій і відео програми можуть отримати доступ через Photo Picker, незалежно від того, чи дійсно ці програми використовують API.

Багато програм отримують доступ до медіафайлів через API магазину медіа. Система індексує файли за їхнім типом, які називаються колекціями сховищ медіафайлів, і підтримує базу даних, до якої програми можуть надсилати запити за допомогою API сховища медіафайлів. Програмам, які використовують API медіа-магазину, не потрібно запитувати дозвіл на читання чи зміну файлів, якими вони володіють, але їм потрібно надати дозвіл користувача на доступ до файлів, що належать іншим програмам.

Починаючи з Android 10, додатки, націлені на рівень API 29 або вище, мали отримати дозвіл Дозвіл READ_EXTERNAL_STORAGE від користувача, перш ніж він зможе використовувати API магазину медіа для доступу до файлів належать іншим програмам. В Android 13 дозвіл READ_EXTERNAL_STORAGE було розділено на три різні дозволи (READ_MEDIA_AUDIO, READ_MEDIA_VIDEO та READ_MEDIA_IMAGES), які кожен надає додатку, націленому на API рівня 33, можливість використовувати API медіа-магазину для доступу до файлів аудіо, відео та зображень відповідно, які належать іншим програми.

Android 14 знову змінює дозволи на доступ до медіафайлів, поєднуючи READ_MEDIA_VIDEO, READ_MEDIA_IMAGES і ACCESS_MEDIA_LOCATION у новий дозвіл під назвою READ_MEDIA_VISUAL_USER_SELECTED. Цей дозвіл дозволяє додатку, націленому на рівень API 34, «читати вибрані користувачем файли зображень і відео зі спільного сховища», згідно з його описом. Однак Android 14 може заднім числом застосувати цю нову поведінку до існуючих програм, націлених на рівень API 33 (тобто. Android 13) і запитайте READ_MEDIA_VIDEO або READ_MEDIA_IMAGES.

Коли програма, націлена на рівень API 33, запускає діалогове вікно дозволу під час виконання, щоб попросити користувача надати йому READ_MEDIA_VIDEO або READ_MEDIA_IMAGES (або обидва), Android 14 може вставити новий запис у діалогове вікно дозволу з написом «Виберіть фотографії». Торкання цього запису запускає нову версію Photo Picker, яка дозволяє користувачеві вибирати, до яких фотографій або відео він хоче надати доступ програмі до. Згодом програма має доступ лише до тих медіа-елементів, які користувач спеціально вибрав, якщо користувач цього не вирішить розширити доступ до додаткових медіа-елементів або надати програмі доступ до всіх колекцій медіа-сховища для зображень і відео.

Цей запис у діалоговому вікні дозволів не відображається за замовчуванням в Android 14 DP1, оскільки його видимість обмежена прапорцем розробника, який мені довелося вимкнути. Однак якщо цю функцію вдасться випустити, це стане великою перемогою для конфіденційності, оскільки це означає, що користувачі завжди матимуть можливість вирішувати, до яких фотографій і відео програма повинна мати доступ.

Занадто мало програм використовують API вибору фотографій, що спонукає Google експериментувати з ним перехоплення існуючого наміру які програми використовують для запуску засобу вибору системних файлів, щоб замість цього запускати засіб вибору фотографій. Хоча Photo Picker має деякі недоліки, наприклад, поки що не показує файли з хмарних медіапровайдерів (можливо, незабаром з розширення SDK версія 5!) і показ лише певних альбомів на пристрої, це краще, ніж старий засіб вибору системних файлів, і, звичайно, краще, ніж кожна програма, яка має доступ до кожної фотографії та відео в галереї.

Розробникам, які зацікавлені у впровадженні API вибору фотографій, слід оновити до останньої версії бібліотека Jetpack Activity, який обробляє виклик версії із зворотною сумісністю, що надається через служби Google Play на Android 4.4–Android 10, або версії, що надається фреймворком через модуль MediaProvider Mainline.