FileProvider для динамических файлов

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

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

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


person Kavin Prabhu    schedule 07.05.2015    source источник


Ответы (1)


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

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

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

person CommonsWare    schedule 07.05.2015
comment
Спасибо за Ваш ответ. Я реализую свой собственный ContentProvider для доступа к базе данных MySecondApplication. Но как получить путь к файлу из ContentProvider Я уже погуглил и в итоге получил FileProvider. Не могли бы вы немного рассказать мне, чтобы получить доступ к файлам или папкам - person Kavin Prabhu; 08.05.2015
comment
@KevinChris: у вас нет доступа к файлам или папкам. ContentProvider работает как веб-сервер. Вы не получаете доступ к файлам или папкам с веб-сервером. Вместо этого у вас есть URL-адреса, и вы открываете потоки на них. То же самое с ContentProvider. - person CommonsWare; 08.05.2015
comment
Да, я понял это и получил доступ к InputStream файла. Спасибо за вашу ценную помощь. - person Kavin Prabhu; 08.05.2015