*新信息* 单步进入FileProvider代码,我看到 external-files-path 实际上并非根植于 / storage / emulated / 0 / ,而是 / storage / emulated / 0 / Android设备/数据/ com.perinote.perinote /文件/ 。所以,我问这个问题,如何在外部存储/ DCIM中共享文件?
我将“外部”文件传递给Intent并获得“IllegalArgumentException:找不到包含...的已配置root”错误。
不确定缺少什么。使用“缓存”文件执行类似操作。
这是我的清单中的提供者部分:
pip
“filepaths.xml”文件:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.perinote.image_access"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
代码片段,其中“file”是有问题的文件名(没有路径):
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path
path="DCIM/Perinote/" name="images" /> <!-- must be same as ImageData.getPerinoteDirectory -->
</paths>
getUriForFile()失败了。
当我在设备上使用文件管理器应用程序时,该文件肯定存在于DCIM / Perinote /
下例如,使用调试器,文件是“IMG_20171130_204015.jpg”。 在Windows上打开资源管理器窗口会显示路径
此PC \ Moto G(4)\内部共享存储\ DCIM \ Perinote
,文件显示在下面的列表中。
答案 0 :(得分:1)
您应该首先将<external-files-path
更改为<external-path.
。