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



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

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

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

我是否必须为此目的创建一个实际文件?如果我这样做,它必须位于其他应用程序可以读取的位置,如发送二进制内容中所述。

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

使用 FileProvider 共享不可公开访问的文件。查看设置文件共享以获取简短教程。

不过,将文本作为电子邮件附件发送有点棘手。您不能将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将自动执行正确的操作。

相关内容

  • 没有找到相关文章

最新更新