*新建信息*
单步进入FileProvider代码,我看到
外部文件路径
不是真正植根于
/存储/模拟/0/
但在
/存储/模拟/0/Android/数据/com。佩里诺。Pernote/文件/
因此,我提出了一个问题,如何在外部存储/DCIM中共享文件?
我正在将一个“外部”文件传递给Intent,并获取一个“IllegalArgumentException:未能找到包含以下内容的配置根…”错误
不知道少了什么。对“缓存”文件执行类似操作也很有效。
这是我清单的提供者部分:
<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>
“filepath.xml”文件:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path
path="DCIM/Perinote/" name="images" /> <!-- must be same as ImageData.getPerinoteDirectory -->
</paths>
还有代码片段,其中“file”是所讨论的文件名(无路径):
Intent intent = new Intent (Intent.ACTION_SEND);
intent.setType ("plain/text");
intent.putExtra (Intent.EXTRA_EMAIL, new String[] {address});
intent.putExtra (Intent.EXTRA_SUBJECT, subject);
intent.putExtra (Intent.EXTRA_TEXT, body);
Uri uri = FileProvider.getUriForFile (getContext (), "com.perinote.image_access", file);
intent.putExtra (Intent.EXTRA_STREAM, uri);
intent.addFlags (Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags (Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult (intent, ACTIVITY_REQUEST_SEND_EMAIL);
getUriForFile()中出现故障。
当我在设备上使用文件管理器应用程序时,文件肯定在DCIM/pernote下/
例如,使用调试器,
文件
为“IMG\U 20171130\U 204015.jpg”。
和打开
探索者
Windows上的窗口显示路径
此电脑\Moto G(4)\Internal shared storage\DCIM\PerNote
文件将显示在下面的列表中。