2

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

这是我正在使用的代码:

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 发送电子邮件时,电子邮件按原样到达,附件和所有内容。

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

当我使用

emailIntent.setType("text/plain");

附件可以正常到达(纯文本),但选择应用程序对话框包含非电子邮件应用程序。

我怎样才能两全其美?无论使用哪个电子邮件客户端,都只有选择应用程序对话框中的电子邮件应用程序和纯文本格式的文本文件附件?

4

1 回答 1

1

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);
于 2012-10-09T18:37:35.383 回答