Что такое Scoped Storage в Android 11?

Источник: Джо Маринг/Android Central

Когда Android 10 был еще в начальной стадии бета-тестирования, у Google были планы на большие изменения в способе доступа приложений к файлам и папкам во внешнем хранилище вашего телефона ( такие вещи, как фотографии, которые вы или другие приложения поместили в папку/data/media, а не на SD-карту, присутствующую во многих моделях Android).

Это изменение было известно как Scoped Storage, и его цель заключалась в том, чтобы убейте злоупотребление разрешениями READ_EXTERNAL_STORAGE, которые так любят запрашивать многие приложения и разработчики.

Эти изменения изначально планировалось применить к каждому приложению на телефоне под управлением Android 10 или более поздней версии, но из-за реакции разработчиков Google изменил курс и потребовал использовать Scoped Storage только для приложений, нацеленных на Android API уровня 29, то есть Android 10. Но с Android 11 Scoped Storage вернулся, и Google вряд ли передумает на этот раз.

10 лучших персонажей res в Android 11, о котором вам нужно знать прямо сейчас

Как работает Scoped Storage

Источник: Android Central

Когда-то Android работал как любая другая настольная операционная система, когда дело доходит до доступа к вашим файлам; такие вещи, как документы, фотографии, музыка или что-нибудь еще, что вы хотели сохранить на своем устройстве, были доступны для открытия любым другим приложением. Вы сказали, что это нормально для приложения, когда вы его установили, и оно так и произошло. Используя собственный пользовательский интерфейс приложения, вы могли просматривать файловую систему и видеть все свои общедоступные файлы.

С Android 4.4 KitKat Google начал вносить изменения и добавлять ограничения на то, как приложение может получать доступ к файлам, которые оно использует. не собственные, а с Android 5.1 была реализована Storage Access Framework. Это дало приложениям возможность доступа к файлам в других папках с помощью Android API вместо использования стандартных программных операций с файлами. Оно работает. Он медленный и довольно непопулярный, но он доступен, и к настоящему времени почти каждый разработчик приложения, которому требуется такой глобальный доступ, по крайней мере, попробовал его, чтобы увидеть, насколько оно подходит или нет, исходя из их потребностей.

С хранилищем с заданной областью больше ограничительно и в то же время проще. Совместимому приложению предоставляется собственная папка для данных, доступных пользователю. У приложений уже есть собственная изолированная папка для хранения необходимых файлов, которая недоступна для других приложений. Scoped Storage дает возможность создать вторую папку для файлов, создаваемых приложением. Думайте о приложении, например, о диктофоне; ему нужно где-то хранить аудиофайлы, которые он создает.

Начиная с Lollipop, разработчики были обучены использовать определенные методы для доступа к файлам, но они очень непопулярны.

Приложению не требуется разрешение на чтение или запись любого файла в этой папке, поэтому при первом запуске вам не будет предложено предоставить какие-либо разрешения относительно местоположений чтения и записи файлов; приложениям также необходимо разрешение для каждой папки, к которой они хотят получить доступ, но не владеют ими.

Разработчикам, которым требуется доступ к папкам, не принадлежащим их приложению, потребуется использовать API Storage Access Framework. Это означает, что ему необходимо запросить API, чтобы узнать, существуют ли файлы, и узнать местоположение его устройства, а затем запросить у пользователя разрешение на его использование. Это рекомендованная передовая практика для доступа к файлам со времен Android Lollipop, так что это не совсем новость. Но с Scoped Storage оно теперь строго соблюдается и больше не является «необязательным».

Зачем вносить это изменение?

Источник: YouTube

Google приводит две веские причины, по которым он вносит это изменение: безопасность и сокращение оставшегося «беспорядка в приложениях».

Причина изменения хороша, но это означает, что разработчикам требуется больше работы. .

С точки зрения безопасности это изменение делает несколько вещей. Прежде всего, он позволяет разработчику иметь собственное пространство в хранилище вашего устройства, которое является частным, без запроса каких-либо конкретных разрешений при первом запуске. И никакое другое приложение не может получить доступ к любому документу, который оно создает, без вы , чтобы это разрешить.

Во-вторых, что не менее важно, оно сокращает злоупотребление разрешением READ_EXTERNAL_STORAGE . Когда вы предоставляете это разрешение для приложения сегодня, оно дает доступ ко всему внешнему хранилищу, в котором мы сохраняем такие вещи, как фотографии, личные документы, видео и другие потенциально конфиденциальные файлы. При использовании Scoped Storage приложения могут видеть только свои собственные папки с данными, а также определенные типы мультимедиа, такие как музыкальные файлы, с использованием других API хранилища.

Новые API были разработаны вместе с программой для разработчиков файловых менеджеров для получения «специального доступа».

Эти API-интерфейсы могут предоставлять доступ для просмотра, записи, удаления и даже массовых действий с помощью встроенного в систему пользовательского приглашения, которое позволяет разрешить или запретить действие. Эти API-интерфейсы должны упростить разработку таких приложений, как музыкальные плееры или фоторедакторы, даже без применения Scoped Storage.

Уменьшение беспорядка в приложениях требует небольшого объяснения. Когда вы удаляете приложение, файлы и папки, которые оно сбрасывает по всему хранилищу вашего устройства, после того, как вы дали ему на это разрешение , остаются. Достаточное количество этих остатков может начать влиять на производительность, особенно если файлы используют общее имя, которое может повторяться другим приложением. Если разработчик создает приложение, которое создает мультимедиа, например, приложение камеры или музыкальный рекордер, он или она может использовать стандартные расположения папок мультимедиа для хранения созданных вами вещей, чтобы они не удалялись при удалении приложения..

А как насчет файловых менеджеров?

Источник: YouTube

Разработчики приложений, таких как файловые менеджеры, которым нужен доступ к каждые файл во внешнем хранилище может сделать это через Storage Access Framework после получения разрешения от Google — в октябре 2019 года на Саммите разработчиков Android мы узнали, что реализуется программа, позволяющая «специальный доступ».

Законным приложениям требуются эти особые разрешения.

Пользователь может предоставить приложению файлового менеджера разрешение на доступ к корню (папке верхнего уровня) внешнее хранилище, тем самым предоставляя рекурсивный доступ к каждой папке и файлу внутри него. Поскольку это довольно широкий выбор, и одной из целей Scoped Storage было доминировать в приложениях, которым нужен этот уровень доступа, хорошо, что Google уделит особое внимание приложениям, которые хотят это сделать, и предоставит разрешения для законных приложений, таких как ваш любимый файловый менеджер.

На этот раз появится Scoped Storage

Источник: Joe Maring/Android Central

Ранние отзывы о Scoped Storage было не очень хорошо. Была даже петиция, в которой просили Google удалить эту функцию и пересмотреть ее реализацию.

Это в основном то, что Google сделал. Scoped Storage было доступно в официальном выпуске Android 10, но от разработчиков не требовалось его использовать. Но все скоро изменится. С сайта разработчиков Android.

Чтобы дать разработчикам дополнительное время для тестирования, приложения, ориентированные на Android 10 (уровень API 29), могут по-прежнему запрашивать атрибут requestLegacyExternalStorage. Этот флаг позволяет приложениям временно отказаться от изменений, связанных с ограниченным хранилищем, таких как предоставление доступа к различным каталогам и различным типам мультимедийных файлов.

Любое приложение, предназначенное для Android 11 или новее должны использовать новые API хранилища, в том числе хранилище с заданной областью. Изменения в соглашении с разработчиками Google Play гласят, что начиная с 1 августа 2020 года все новые приложения, представленные в Google Play должны нацелены на Android 10 или более поздней версии, а все обновления существующих приложений должны быть нацелены на Android 10 или более поздней версии, начиная с 1 ноября 2020 г. Ожидайте того же поведения, и в следующем году приложения, вероятно, потребуются для Android 11.

Это означает, что если разработчик приложения не желает позволить приложению увядать и умереть в море. старых приложений, Scoped Storage должна быть реализована в ближайшее время. К счастью, на этот раз Google прислушался к отзывам и упростил работу приложений, которым нужен полный или специальный доступ, а новые API в Android 11 упрощают и другие вещи. Все мы должны хотеть более безопасный и безопасный Android.

Оцените статью
futurei.ru
Добавить комментарий