Android的FileProvider是否真的支持外部文件路径?

时间:2016-08-30 12:37:32

标签: android commonsware-cwac android-fileprovider android-7.0-nougat

我遇到了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的文档......

所以

  1. 如果我想匹配我的应用目前的工作方式,我是否认为我应该使用external-files-path
  2. 文档/ FileProvider是否真的坏了/不正确我应该使用类似cwac-provider的内容?
  3. 更新

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

2 个答案:

答案 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>

以下是工作示例应用https://github.com/santbob/AppPrivateImageUpload