1

Я хотел бы использовать FileProvider для доступа к MyFirstApplication файлам в MySecondApplication, которые хранятся во внутреннем каталоге. Я просмотрел документы для FileProvider и примеры.FileProvider для динамических файлов

Мой вопрос: папки и файлы в InternalStorage могут меняться во всех случаях. Так в manifest.xml при определении тега <meta-data> в <provider> Я не могу дать xml файл со статическим путем и именем. Я хотел бы динамически выбирать файлы и папки во время выполнения. Это возможно? Если да, то как я могу добиться этого?

EDIT: Вот что именно мне нужно. У меня есть два приложения. Первое приложение будет хранить все файлы во внутреннем хранилище. Позже я хочу загрузить все эти файлы (в основном .zip-файлы) через второе приложение. Поэтому для тех файлов, к которым нужно получить доступ вторым приложением, мне также нужен путь к этим файлам.

ответ

2

У вас есть два варианта:

  1. <meta-data> Направьте в корневой директории, в которой будут существовать ваши файлы и каталоги. IOW, укажите на самом низком уровне, где местоположения не изменятся. Это может потребовать некоторой реорганизации остальной части вашего кода, чтобы ограничить область действия вашего файла/каталога в определенной области.

  2. Не используйте FileProvider, но вместо этого сверните свой собственный ContentProvider, который поддерживает API потоковой передачи с бизнес-правилами, которые вы хотите использовать.

+0

Спасибо за ваш ответ. Я реализую свой собственный «ContentProvider» для доступа к базе данных «MySecondApplication». Но как получить путь к файлу из «ContentProvider», я уже зашел в эту игру и оказался в «FileProvider». Не могли бы вы немного рассказать мне, чтобы получить доступ к файлам или папкам. –

+1

@KevinChris: вы не получаете доступ к файлам или папкам. «ContentProvider» работает так же, как веб-сервер. Вы не получаете доступ к файлам или папкам с веб-сервером. Вместо этого у вас есть URL-адреса, и вы открываете для них потоки. То же самое с «ContentProvider». – CommonsWare

+0

Да, я понял это и получил доступ к 'InputStream' файла. Спасибо за вашу ценную помощь. –