【发布时间】:2017-10-11 14:59:51
【问题描述】:
请原谅我可能是一个愚蠢的问题,但我真的无法在任何地方找到答案。
我需要我的程序将 EditText 的内容保存为 html 文件并与其他应用程序共享。为此,我需要将文件写入内部存储,然后获取它的 URI。但是,任何地方都没有关于如何做到这一点的信息(我可以很好)。
这是我的代码(Editor 是 Activity 的名称,myapp 是包):
String filename = "Lorem ipsum.html";
FileOutputStream outputStream;
try {
outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
outputStream.write(Html.toHtml(textField.getText()).getBytes());
outputStream.close();
System.out.println(filename);
} catch (Exception e) {
e.printStackTrace();
}
Intent shareIntent = ShareCompat.IntentBuilder.from(Editor.this)
.setStream(FileProvider.getUriForFile(Editor.this, "com.myapp.fileprovider", new File(filename)))
.getIntent();
shareIntent.setData(FileProvider.getUriForFile(Editor.this, "com.myapp.fileprovider", new File(filename)));
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(shareIntent);
据我所知,文件创建部分工作正常;没有异常被捕获。但是,实际的共享部分会因此错误而崩溃:
java.lang.IllegalArgumentException: Failed to find configured root that contains /Lorem ipsum.html
我在尝试查找 URI 时显然做错了,但我一直无法找到解决方案。按照官方文档没有帮助,我找不到这个特定问题的例子。
如果重要,这是我的文件提供者声明:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.myapp.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths" />
</provider>
提前感谢您的帮助。
【问题讨论】: