我遇到了FileUriExposedException,你试图将文件:/// Uri发送到另一个应用程序(在这种情况下是相机),我应该使用FileProvider(导致api崩溃) 24牛轧糖)。
在我们的应用中,我们使用上下文getExternalFilesDir(String)
方法生成文件:
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的文档......
external-files-dir
https://github.com/commonsguy/cwac-provider#metadata-elements的支持java.lang.IllegalArgumentException: Failed to find configured root that contains ...
,但这可能是由其他原因造成的。所以
external-files-path
?更新
为了完整性,正如@CommonsWare在下面推荐的那样,使用support-v4
的24.2.0版本对我有用。
答案 0 :(得分:2)
如果我想匹配我的应用目前的工作方式,我是否正确地认为我应该使用external-files-path?
是。虽然请注意getExternalFilesDir()
does not officially support "attachments"
as a parameter,但如果您的应用程序有一天会中断,请不要感到惊讶。
文档/ FileProvider是否真的坏了/不正确
好吧,我在新的external-files-path
工件的24.2.0的源JAR中看到了support-core-utils
支持的代码。截至24.2.0,support-v4
已细分为一系列单独的工件,FileProvider
位于support-core-utils
。
因此,如果您不需要全部support-v4
,请尝试使用support-core-utils
的24.2.0(或support-v4
)。
答案 1 :(得分:0)
我有类似的方式将私人文件共享到相机以上传完整质量的图像,而无需获得WRITE_EXTERNAL_STORAGE的权限。
我可以使用 按如下方式使其工作
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="my_images"
path="Android/data/com.santhoshn.appprivateimageupload/files/Pictures" />
</paths>