【问题标题】:How to share files from any path using a FileProvider?如何使用 FileProvider 从任何路径共享文件?
【发布时间】:2015-05-16 14:31:05
【问题描述】:

我的应用程序允许用户下载一些内容并将其存储在他选择的文件夹中。 我想创建一个 ContentProvider 来共享这些文件,但是当下载的文件存储在应用程序默认路径之外时,我不知道该怎么做。

我尝试将以下文件路径标记为:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="." path="/" />
</paths>

但它只是尝试将共享文件路径与应用默认文件夹的根目录匹配。 例如,有没有办法从 SD 卡共享文件? 如果是这样,我该怎么做?

【问题讨论】:

    标签: android android-contentprovider android-fileprovider


    【解决方案1】:

    例如,有没有办法从 SD 卡共享文件?

    使用&lt;external-path&gt; 而不是&lt;files-path&gt;FileProvider has a bug 的文档; &lt;external-path&gt; 映射到 Environment.getExternalStorageDirectory()

    【讨论】:

    • 谢谢,但这是一个例子。我只知道运行时的路径,因为用户可以随时更改它。有没有办法在根级别设置路径,所以我可以共享任何文件?
    • @user1026605:“有没有办法在根级别设置路径,所以我可以共享任何文件?” - 不。 “我只知道运行时的路径,因为用户可以随时更改它”——但是,如果您的应用程序正在执行文件 I/O,则路径必须是您可以读取和写入的某个位置。 FileProvider 上的三个选项涵盖了 Android SDK 支持的可以读写的主要位置。因此,如果您在 FileProvider 元数据中创建三个元素,您将覆盖所有三个可能的根。
    • @user1026605:如果您将文件放在FileProvider 不支持的位置(例如,通过getExternalFilesDirs() 的可移动媒体),您将需要创建自己的FileProvider 克隆,就像我一样与my StreamProvider 合作。
    • 我刚刚发现 似乎与我正在尝试做的事情完美匹配。我会做更多的测试
    • @user1026605:这没有记录,所以我会犹豫是否依赖它。
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多