Android:可以附加文件到电子邮件,而不写入SD?

我的应用程序将数据本地存储在本地的SQLite数据库中,我希望允许用户通过向自己发送一个.csv文件来导出这些数据。 为了做到这一点,我从数据库中生成.csv并将其写入SD卡,然后将其附加到电子邮件:

StringBuilder csv = generateFile(); writeFile(csv.toString(),"file.csv"); Intent email = new Intent(android.content.Intent.ACTION_SEND); email.setType("application/octet-stream"); email.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("file://sdcard/file.csv")); 

这一切都很好。 但是,我想知道的是,如果可以跳过写入SD的步骤并直接附加数据。

Solutions Collecting From Web of "Android:可以附加文件到电子邮件,而不写入SD?"

即使有可能,我也build议反对。

用于发起活动的Intents将被持续(可能)相当长的时间 – 只要所讨论的活动是“活着的”并且可以想象地返回到(例如回到栈上,因为用户拿着手机在撰写电子邮件时打电话,然后通过短信聊天半小时)。

此外, Intents在进程之间被复制,作为其中的一部分。 例如,电子邮件客户端将处于与您的应用程序不同的过程中。

由于这两个原因,你需要保持你的Intents小。 对于内容的唯一替代scheme是将内容直接放在额外的内容中,并且该CSV文件可能会变得相当大。