Android 已在本地文件目录中发送带有附件的电子邮件
我成功地将数据作为csv文件导出到外部存储目录,然后通过电子邮件将其作为附件发送和接收。唯一的问题是这个文件会出现在一个公共目录中,这会让人感到困惑,而且不必要(还需要额外的权限) 所以我尝试将导出文件存储在private files目录中。我可以将文件保存到该目录,打开电子邮件客户端(myMail和Gmail),在发送之前查看带有正确文件大小信息的附件。但在发送后,我收到了没有附件的邮件。是否可以为此使用私有文件目录Android 已在本地文件目录中发送带有附件的电子邮件,android,email,attachment,email-attachments,Android,Email,Attachment,Email Attachments,我成功地将数据作为csv文件导出到外部存储目录,然后通过电子邮件将其作为附件发送和接收。唯一的问题是这个文件会出现在一个公共目录中,这会让人感到困惑,而且不必要(还需要额外的权限) 所以我尝试将导出文件存储在private files目录中。我可以将文件保存到该目录,打开电子邮件客户端(myMail和Gmail),在发送之前查看带有正确文件大小信息的附件。但在发送后,我收到了没有附件的邮件。是否可以为此使用私有文件目录 String fileName = reportName + ".csv";
String fileName = reportName + ".csv";
try {
FileOutputStream fileOutputStream = getApplication().openFileOutput(fileName, MODE_PRIVATE);
fileOutputStream.write(sbCsv.toString().getBytes());
fileOutputStream.flush();
fileOutputStream.close();
} catch (Exception e) {
D.e(e);
}
Uri exportFile = null;
File file = getApplication().getFileStreamPath(fileName);
// File file = new File(getApplication().getFilesDir(), fileName);
exportFile = Uri.fromFile(file);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "testSubject");
emailIntent.putExtra(Intent.EXTRA_STREAM, exportFile);
String aEmailList[] = {"test@test.org"};
emailIntent.putExtra(Intent.EXTRA_EMAIL, aEmailList);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(
Intent.EXTRA_TEXT,
Html.fromHtml(sbBody
.toString())
);
startActivityForResult(emailIntent, REQUESTCODE_SENTEMAIL);
令人惊讶的是,文件大小还可以。尝试将模式\u PRIVATE更改为模式\u WORLD\u READABLE。否则,请使用内容提供商。谢谢,这是可行的,但MODE_WORLD_READABLE被贬低了,这就是我以前没有使用它的原因。所以我可以和内容提供商一起尝试。我只是想知道这是否真的有必要,因为我只想用电子邮件发送一个导出文件,并且在发送后不再需要该文件。然后将其放在外部缓存中。删除第二天,因为我认为在onActivityResult中这样做还早。但你可以试试。我以前做过类似的事情,但我也想取消额外的权限。然后试试内容提供商。或是忽略了这些批评。