对于external_files_path,android getUriForFile失败

时间:2018-04-19 00:29:58

标签: android android-fileprovider

*新信息* 单步进入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

,文件显示在下面的列表中。

1 个答案:

答案 0 :(得分:1)

您应该首先将<external-files-path更改为<external-path.