纯文本附件最终在base64中

时间:2012-10-09 18:30:14

标签: android email android-intent base64 email-attachments

在我的Android应用中,我正在尝试允许用户发送带有atachment的电子邮件。附件是纯文本文件。我希望用户只能选择电子邮件应用程序来发送此电子邮件。

这是我正在使用的代码:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(Intent.EXTRA_SUBJECT,  "Some awesome email");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Check out the attachment!");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getAbsolutePath()));
listActivity.startActivity(Intent.createChooser(emailIntent, "Send email with...");

到目前为止,只显示了电子邮件应用。当我使用gmail发送电子邮件时,电子邮件将按照它应该,atachment和所有内容到达。

但是,当我使用k9邮件发送电子邮件时,附件最终会在base64中编码。所以基本上,它是不可读的。

当我使用

emailIntent.setType("text/plain");

附件很好(以纯文本格式),但是choose-app-dialog包含非电子邮件应用程序。

我怎样才能充分利用这两个世界?只有在选择应用程序对话框和文本文件附件中的电子邮件应用程序无论使用哪个电子邮件客户端都以纯文本形式到达?

1 个答案:

答案 0 :(得分:0)

Intent.createChooser()会为您提供常规Intent。只需修改您获得的Intent即可。像这样:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(Intent.EXTRA_SUBJECT,  "Some awesome email");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Check out the attachment!");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getAbsolutePath()));
Intent intent = Intent.createChooser(emailIntent, "Send email with...");
intent.setType("text/plain");
listActivity.startActivity(intent);