如何使用FileProvider
从辅助外部存储器提供文件?
FileProvider
的当前实现只处理ContextCompat返回的第一个目录。getExternalFilesDirs
...
} else if (TAG_EXTERNAL_FILES.equals(tag)) {
File[] externalFilesDirs = ContextCompat.getExternalFilesDirs(context, null);
if (externalFilesDirs.length > 0) {
target = externalFilesDirs[0];
}
}
...
看来,没有办法定义一个
要处理位于外部SD卡上的文件,我将provider_paths.xml更改为
<paths>
<external-path path="." name="external_files" />
<root-path path="." name="sdcard1" />
</paths>
FileProvider不支持辅助存储,因为下面的代码:
来自支持的代码:支持核心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中有一个特殊的标记:根路径,这在官方参考中没有涉及。
if (TAG_ROOT_PATH.equals(tag)) {
target = DEVICE_ROOT;// DEVICE_ROOT = new File("/");
} else if (TAG_FILES_PATH.equals(tag)) {
所以,root路径匹配所有路径。
只需在FileProvider xml中键入此代码,FileProvider就可以处理辅助存储中的文件。
<root-path name="root" path="." />
请注意,它可能会泄漏您的目录结构。
答案是<代码>文件提供程序不支持此功能。对于Android7,这是一个更大的问题,因为文件://
Uri方案被弃用。
我发布了一份错误报告。
我正在尝试为共享文件设置文件提供程序。我的文件保存在外部存储器的“AppName”文件夹中(与Android、电影和图片文件夹的级别相同)。 以下是我的文件提供程序配置: 以及文件路径。xml: 当我试图访问我的文件: 它返回一个错误:java。lang.IllegalArgumentException:未能找到包含/storage/emulated/0/AppName/IMG_20160419_
这是一个奇怪的用例,我需要一些帮助来弄清楚如何相互结合使用辅助/提供者/FactoryModuleBuilders。忽略的缺失。这只是一个例子。 属于我无法更改的库的一组特征具有以下模式。它使用蛋糕图案。 由于这些特征不能被直接注入,我创建了一个允许它们被注入的包装器 在我的代码中,我有一个依赖于服务的控制器,而服务又依赖于库。根据控制器的需要,服务应能够使用“BB”或“CC”。组件如下所示 我将
我知道很多问题已经被回答了,但是在我的例子中,我的代码在Oppo、三星手机上运行正常,但是在MI、MOto G、Lenavo手机上不能运行 下面是我的代码:
我正试图在应用程序处于退出状态时从firebase保存一个通知到redux。 但是我需要在app.js中这样做,当我甚至不在组件上时,我如何分派redux操作呢? 这就是我要做的
文件辅助函数文件包含若干对文件进行操作的函数。 加载 使用以下代码:$this->load->helper('file'); 加载后可用以下函数: read_file('path') 返回路径为path的文件内容。例:$string = read_file('./path/to/file.php'); 可以是相对或者绝对的服务器的路径。如果函数执行失败则返回 FALSE(boolean类型)。 提
文件辅助函数文件包含了一些帮助你处理文件的函数。 加载辅助函数 可用函数 加载辅助函数 该辅助函数通过下面的代码加载: $this->load->helper('file'); 可用函数 该辅助函数有下列可用函数: read_file($file) 参数: $file (string) -- File path 返回: File contents or FALSE on failure 返回类型