gpt4 book ai didi

android - FileProvider 和二级外部存储

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:23 25 4
gpt4 key购买 nike

我如何使用 FileProvider 提供辅助外部存储中的文件? ?

当前执行 FileProvider仅处理 ContextCompat.getExternalFilesDirs 返回的第一个目录

...    
} else if (TAG_EXTERNAL_FILES.equals(tag)) {
File[] externalFilesDirs = ContextCompat.getExternalFilesDirs(context, null);
if (externalFilesDirs.length > 0) {
target = externalFilesDirs[0];
}
}
...

似乎没有办法定义 <path> FileProvider 的条目, 匹配辅助外部存储路径...

最佳答案

由于以下代码,FileProvider 不支持辅助存储:

来自支持的代码:support-core-utils:26.1.0 FileProvider

            } else if (TAG_EXTERNAL_FILES.equals(tag)) {
File[] externalFilesDirs = ContextCompat.getExternalFilesDirs(context, null);
if (externalFilesDirs.length > 0) {
target = externalFilesDirs[0];// Code here, That's why!!!
}
} else if (TAG_EXTERNAL_CACHE.equals(tag)) {

不过,FileProvider中有一个特殊的TAG:root-path,官方没有提及。

            if (TAG_ROOT_PATH.equals(tag)) {
target = DEVICE_ROOT;// DEVICE_ROOT = new File("/");
} else if (TAG_FILES_PATH.equals(tag)) {

因此,root-path 匹配所有路径。

只需在您的 FileProvider xml 中键入此代码,然后 FileProvider 就可以处理辅助存储中的文件。

<root-path name="root" path="." />

请注意,它可能会泄露您的目录结构。

关于android - FileProvider 和二级外部存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40318116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com