1

我遇到了 FileUriExposedException 东西,您尝试将 file:/// Uri 发送到另一个应用程序(在本例中为相机),我应该改用 FileProvider(导致 api 24 Nougat 崩溃)。

在我们的应用程序中,我们使用 Context 的getExternalFilesDir(String)方法生成一个文件:

context.getExternalFilesDir("attachments");

FileProvider文档让我相信如果我希望功能与现在相同,我应该external-files-path在我的中使用。paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-files-path
        name="attachments"
        path="attachments/" />
</paths>

但是在谷歌搜索了一些之后,我发现了一些让我认为 FileProvider 有问题的东西,或者至少是 FileProvider 的文档......

所以

  1. external-files-path如果我想匹配我的应用程序当前的工作方式,我是否认为我应该使用?
  2. 文档/FileProvider 真的损坏/不正确,我应该改用cwac-provider之类的东西吗?

更新

为了完整起见,正如@CommonsWare 下面推荐的那样,使用 24.2.0 版本support-v4对我有用。

4

2 回答 2

2

如果我想匹配我的应用程序当前的工作方式,我是否认为我应该使用 external-files-path ?

是的。虽然请注意,getExternalFilesDir()官方不支持"attachments"作为参数,所以如果您的应用程序有一天中断,请不要感到惊讶。

文档/FileProvider 是否真的损坏/不正确

好吧,我在新工件external-files-path的 24.2.0 的源 JAR 中看到了支持代码。,从 24.2.0 开始,已细分为一系列单独的工件,并位于.support-core-utilssupport-v4FileProvidersupport-core-utils

因此,请尝试使用 24.2.0 support-v4(或者support-core-utils如果您不需要全部support-v4)。

于 2016-08-30T12:50:41.237 回答
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>

这是工作示例应用程序https://github.com/santbob/AppPrivateImageUpload

于 2016-10-13T04:37:39.453 回答