Почему Chrome просит доступ к файлам через com.android.chrome.fileprovider и как это настроить

com.android.chrome.fileprovider — это реализация Android FileProvider: Chrome создаёт безопасные content:// URI для передаваемых файлов, поэтому при скачивании, открытии или отправке документов система может запрашивать разрешения на чтение/запись. Ниже — коротко о причинах и точные шаги, чтобы настроить доступ безопасно.

Что такое FileProvider и зачем Chrome его использует

FileProvider — компонент платформы/AndroidX, который даёт приложениям способ делиться файлами через временные content:// URI без раскрытия реальных путей на диске. Chrome применяет его, когда:

  • скачивает файлы (PDF, изображения, APK) в хранилище;
  • открывает файл во внешнем приложении (например, PDF в стороннем ридере);
  • передаёт файлы через "Поделиться" другому приложению.

Преимущество: вместо доступа к /storage/... генерируется временный URI, который можно дать отдельному приложению с правами только на этот URI.

Игнорирование системного запроса разрешения может заблокировать скачивания или открытие файлов — Chrome не сможет сохранить или передать файл другому приложению.

Почему появляется запрос и что он означает

Запросы обусловлены тремя факторами:

  • Разрешения на доступ к хранилищу. На старых Android это «Хранилище», на новых — «Файлы и медиа» или отдельный доступ «Все файлы» (Manage external storage).
  • Scoped Storage (Android 10–13 и выше): прямой доступ к чужим файлам ограничен, поэтому Chrome использует FileProvider и/или Storage Access Framework (SAF), что запускает диалог разрешений.
  • Операции с внешними приложениями: передача URI другому приложению требует выдачи временного доступа.

Если запросы стали частыми после обновления Chrome или системы, это нормально: пересборка манифеста/изменения путей могут вызывать повторные подтверждения.

Как настроить доступ правильно (пошагово)

  1. Разрешить базовый доступ
    • Настройки → Приложения → Chrome → Разрешения → Файлы и медиа (или «Хранилище»).
    • Выберите «Разрешать только при использовании приложения», если не хотите давать постоянный полный доступ.
  2. Проверить папку загрузок в Chrome
    • Chrome → Настройки → Скачивания → Включите «Спрашивать, куда сохранять» или укажите общую папку Downloads. Это уменьшит обращения к приватным директориям /Android/data.
  3. Если нужен полный доступ (только для Android 11+)
    • Настройки → Приватность (или Приложения → Специальный доступ) → Доступ ко всем файлам → включите для Chrome только если нужно.
  4. Устранение проблем
    • Очистка кэша: Настройки → Приложения → Chrome → Хранилище → Очистить кэш.
    • Переустановите Chrome или обновите систему, если разрешения «зависли».
    • Отключите сторонние антивирусы/файловые менеджеры, которые могут перехватывать доступ.

Если заботит приватность, используйте «Инкогнито» и отключите синхронизацию: это не остановит работу FileProvider, но уменьшит привязку скачиваний к учётной записи.

Для разработчиков: пример конфигурации FileProvider

Добавьте в AndroidManifest.xml (пример):

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="com.android.chrome.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>

Пример res/xml/file_paths.xml:

<paths>
    <external-files-path name="downloads" path="." />
</paths>

Это ограничит выдаваемые URI нужными директориями.

Частые ошибки

  • Неправильная папка загрузок: Chrome пытается писать в защищённую директорию /Android/data — смените путь на Downloads.
  • Выдача «Все файлы» без необходимости: даёт широкие права и повышает риск. Предпочтительнее — SAF или выбор папки пользователем.
  • Сторонние приложения блокируют доступ: антивирусы и менеджеры файлов иногда мешают. Отключите их и проверьте снова.

FAQ

  • Нужно ли всегда давать «Все файлы»? Нет — чаще достаточно разрешения «Файлы и медиа» или выбор папки через SAF.
  • Может ли FileProvider читать все мои файлы? Нет — он передаёт только те файлы, URI на которые создало приложение (в данном случае Chrome).
  • Что делать, если файлы не скачиваются после разрешения? Очистите кэш приложения и перезапустите Chrome; при необходимости переустановите.

Настройте разрешения один раз, выбирая минимально необходимые права, и Chrome будет корректно сохранять и открывать файлы без лишних всплывающих запросов.