Android:将简单文本共享为文件/附件

时间:2016-07-09 09:14:59

标签: android file android-intent

我有一个应用程序收集一些信息,并允许用户使用Android的Intent框架共享它。

到目前为止,它以纯文本形式分享报告:使用putExtra(Intent.EXTRA_TEXT, report),其中reportString

但是,我希望将报告作为文件共享,以便于作为电子邮件附件而非正文共享。

我是否必须为此目的创建实际文件?如果我这样做,则必须位于其他应用可以阅读的位置,如send binary content中所述。

我期待一个允许我提供ByteArrayOutputStream的API,所以也许我只是遗漏了一些东西。具体来说,我宁愿不强迫共享应用程序获得对任何存储的许可。

1 个答案:

答案 0 :(得分:1)

使用FileProvider共享无法公开访问的文件。查看Setting Up File Sharing获取简短教程。

将文字作为电子邮件附件发送虽然有点棘手。您不能使用text/plain作为类型,因为这意味着数据是在EXTRA_TEXT中提供的。但是这个额外的文本最终会出现在电子邮件正文中,而不是附件中。

应该做些什么:

Uri fileUri = FileProvider.getUriForFile(context, "org.example.provider.authority", reportFile);

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("*/*");
shareIntent.putExtra(Intent.EXTRA_STREAM, fileUri);

startActivity(Intent.createChooser(shareIntent, null)); 

您还应确保FileProvider.getType()为报告文件返回text/plain。实现此目的的最简单方法是使用.txt作为文件扩展名,FileProvider将自动执行正确的操作。