Я столкнулся с файлом FileUriExposedException, где вы пытаетесь отправить файл: /// Uri в другое приложение (в этом случае камера), и вместо этого я должен использовать FileProvider (вызывает сбой на api 24 Nougat) ,Действительно ли FileProvider Android поддерживает внешний путь-путь?
В нашем приложении, мы создаем файл, используя getExternalFilesDir(String)
метод для Context:
context.getExternalFilesDir("attachments");
FileProvider documentation ведет меня поверить, что я должен использовать external-files-path
в моем paths.xml
, если я хочу функциональность быть такой же, как сейчас ,
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path
name="attachments"
path="attachments/" />
</paths>
Но после того, как прибегая к помощи еще немного, я нашел несколько вещей, которые заставляют меня думать, что есть проблемы с FileProvider или, по крайней мере, документация FileProvider по ...
- https://code.google.com/p/android/issues/detail?id=61170
- @commonsWare ответ и комментарий https://stackoverflow.com/a/30276915/921988
- README этой активной библиотеки сообщает, что добавляет поддержку
external-files-dir
https://github.com/commonsguy/cwac-provider#metadata-elements - Также, сейчас я получаю
java.lang.IllegalArgumentException: Failed to find configured root that contains ...
, но это может быть вызвано чем-то другим.
Так
- Правильно ли я думать, что я должен использовать
external-files-path
, если я хочу, чтобы соответствовать, как в настоящее время работает мое приложение? - Действительно ли документация/FileProvider нарушена/неверна, и вместо этого я должен использовать что-то вроде cwac-provider?
UPDATE
Для полноты картины, поскольку @CommonsWare рекомендуется ниже, с использованием версии support-v4
24.2.0 работает для меня.
Wow! Спасибо за очень быстрый и очень полезный ответ! Я попробую 24.2 support-v4. С другой стороны, вы имеете в виду, что он не поддерживает «вложения» в том, что аргумент «String type», который я предоставляю, в идеале должен быть одним из упомянутых в документации (начиная с 'DIRECTORY _...')? – Josh
@Josh: Да, в идеале это «null» или одно из указанных поддерживаемых значений. * Вероятно, они будут продолжать поддерживать произвольные строки, поскольку они никогда не выполняли проверку здесь, но мы не можем исключить, что они начнут применять правила. – CommonsWare
ах ок я понимаю. Спасибо что подметил это! это то, на что мы будем смотреть. очень полезный материал! – Josh