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的步骤并直接附加数据。

  • getoutputmediafileuri方法不可访问?
  • 有没有得到uri的位图,将它保存到SD卡?
  • 如何在Android中获得一个图像资源的URI
  • searchbuild议使用SUGGEST_COLUMN_ICON_1的url
  • 在库中的ACTION_GET_CONTENT在ImageView的setImageURI()中不起作用后,Uri返回
  • android camera:将结果ResultInfo {who = null,request = 0,result = -1,data = null}传递给activity
  • 如何检索ImageView的ImageUri?
  • 在android中获取skype联系人列表和状态
  • 即使有可能,我也build议反对。

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

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

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