Почему в Android 12–14 пропало разрешение на хранилище и как выдать доступ
Коротко: классического «Доступ к хранилищу» в Android 12–14 больше нет — вместо него используются конкретные группы разрешений (Фото и видео, Музыка и аудио, Файлы/контент), системный выбор файлов через SAF, а для редких задач — MANAGE_EXTERNAL_STORAGE с оговорками. Далее — что именно включать и как действовать.
Оглавление {{TOC_AUTOMATIC}}
Коротко о том, как поменялась модель доступа к файлам
Android перешёл на Scoped Storage: приложение получает полный доступ только к своей «песочнице» и ограниченный доступ к общим данным через MediaStore или выбор пользователя (SAF). Основные последствия для пользователя и разработчика:
- Нет единого разрешения «Storage» — есть узкие группы (Фото и видео, Музыка, Файлы/контент).
- Приложение не может произвольно читать любые файлы без явного выбора пользователя.
- Для работы с документами рекомендуется использовать системный диалог выбора файлов (SAF).
Если в настройках приложения нет строки «Память/Хранилище», это нормально — заменено на более понятные группы разрешений.
Как пользователю выдать доступ к файлам (практическая инструкция)
- Откройте Настройки → Приложения → выберите приложение → Разрешения.
- Включите нужную группу:
- Фото и видео — для галерей, редакторов, мессенджеров.
- Музыка и аудио — для плееров.
- Файлы и контент / Документы — для доступа к файлам (иногда реализуется через диалог).
- Если приложение работает с конкретными документами: в нём нажмите «Открыть файл» или «Импорт» — появится системный проводник; выберите файл или папку.
- Если предлагается «Разрешить только при использовании» — это безопасный режим; для постоянного доступа иногда нужно выбрать «Разрешить всегда».
Если приложение не видит ваши фото — сначала проверьте «Фото и видео». Разрешение на камеру не равно доступу к сохранённым медиа.
Если приложение требует «доступ ко всем файлам», но ваш интерфейс не показывает такое разрешение — возможно, приложение не обновлено под новые Android. В этом случае ищите обновления или альтернативу.
Что делать, если приложение не видит документы (PDF, ZIP, DOCX)
- Используйте кнопку «Открыть файл» в приложении: выбор через SAF даёт приложению доступ к конкретному файлу или папке.
- Если приложение просит доступ к папке: в диалоге выберите каталог и подтвердите доступ; система может сохранить право доступа долговременно.
- Для файловых менеджеров: при необходимости может требоваться MANAGE_EXTERNAL_STORAGE (см. ниже), но это редкий случай.
Для разработчика: что нужно изменить в приложении
- Перейдите на MediaStore и новые разрешения:
- READ_MEDIA_IMAGES / READ_MEDIA_VIDEO / READ_MEDIA_AUDIO (Android 13+), плюс совместимость с READ_EXTERNAL_STORAGE где нужно.
- Для документов и произвольных файлов — используйте SAF:
- ACTION_OPEN_DOCUMENT, ACTION_OPEN_DOCUMENT_TREE, ACTION_CREATE_DOCUMENT.
- Для долгосрочного доступа — takePersistableUriPermission.
- MANAGE_EXTERNAL_STORAGE (all files access):
- Только для явных сценариев (файловые менеджеры, бэкапы, антивирусы).
- Требует обоснования и может быть отклонено при модерации в магазине.
- Интерфейс покажет пользователю «Разрешить управление всеми файлами» — это уменьшает доверие, используйте с осторожностью.
- Обработка версий:
- Реализуйте ветвление по API: старые модели разрешений для Android <10, Scoped Storage/MediaStore/SAF для Android 10+.
- UX и пояснения:
- Ясно объясняйте пользователю, зачем нужно разрешение и какие данные вы используете — это повышает конверсию запроса разрешения.
Для приложений, работающих с документами, полностью переводите IO на SAF — это уменьшит количество ошибок и упростит совместимость с новыми версиями Android.
Частые ошибки при миграции и как их исправить
- Ожидание, что WRITE_EXTERNAL_STORAGE даст полный доступ — неверно для Android 12–14.
- Работа с жёстко захардкоженными путями (/sdcard/...).
- Игнорирование SAF и MediaStore.
- Отсутствие fallback‑логики для разных API‑уровней.
- Неполные объяснения в UI — пользователь откажет в доступе.
Решение: аудит кода на предмет прямых операций с внешними путями, внедрение SAF/MediaStore, тестирование на реальных устройствах с Android 12–14.
FAQ
-
Нужно ли включать MANAGE_EXTERNAL_STORAGE для всех файловых менеджеров?
Только если функциональность реально требует доступа ко всем файлам; иначе используйте SAF и MediaStore. -
Как временно дать доступ к фото?
Дайте разрешение «Фото и видео» или используйте диалог выбора файла — он даёт доступ к выбранным объектам. -
Что делать, если приложение пишет, что «нужен доступ к хранилищу», но система не показывает такое разрешение?
Проверьте обновления приложения; если нет — свяжитесь с разработчиком или используйте альтернативу.
Если нужно — могу переписать статью под аудиторию: пошаговая инструкция с скриншотами для пользователей или техническое руководство с примерами кода и checklist для разработчиков.