#android #fileprovider
#Android #файлообменник
Вопрос:
Я работаю над библиотекой, в которой я реализую FileProvider из службы поддержки Android и хочу упростить предоставление разработчику общего доступа к файлам с любого из external-path
, external-cache-path
cache-path
. Если я сам предоставляю пути, вопрос в том, создаю ли я какие-либо проблемы с безопасностью, если я объявляю общий доступ к корню каждого из этих путей следующим образом:
<?xml version="1.0" encoding="UTF-8" ?>
<paths>
<external-path name="external_files" path="." />
<cache-path name="internal_cache" path="." />
<external-cache-path name="external_cache" path="." />
</paths>
Мне все еще нужно позвонить getUriForFile(..)
, чтобы получить правильный URI? Возможно ли, чтобы кто-то угадал имя файла по этому пути в uri исходного содержимого, а затем получил к нему доступ, или getUriForFile
делает что-то особенное для предоставления доступа к этому конкретному файлу?
Ответ №1:
getUriForFile()
возвращает защищенный Uri только для доступа к этому одному файлу. Файлообменник предоставляет доступ к одному файлу для каждого Uri. То, что вы предложили, — это безопасный способ разрешить приложениям доступ к вашим файлам.
Комментарии:
1. У вас есть какая-либо документация в поддержку этого? Я не сомневаюсь в вас, но мне трудно найти хороший источник, чтобы доказать это… Спасибо!
2.
getUriForFile()
Это ссылка на документацию для этого. Это также является частью документации FileProvider. Прочитайте «Генерация URI содержимого для файла» и «Предоставление временных разрешений URI», они объясняют это действительно хорошо. Я также тщательно протестировал это в своих приложениях. — developer.android.com/reference/android/support/v4/content /…