请在重复之前仔细阅读我的问题。谢谢:))
我想发送附件附件的电子邮件。我使用了 ACTION_SENDTO
代码:
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{
Wrapper.INSTANCE.getSupportEmail()});
intent.putExtra(Intent.EXTRA_SUBJECT, getResources().getString(resourceTitleId));
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filePath));
try {
ctx.startActivity(Intent.createChooser(intent, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(ctx, "There are no email clients installed.",
Toast.LENGTH_SHORT).show();
}
它仅显示电子邮件客户端,请参见下图:
但附件不起作用,除了GMAIL。
我也尝试用 ACTION_SEND
来实现它CODE:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{
Wrapper.INSTANCE.getSupportEmail()});
intent.putExtra(Intent.EXTRA_SUBJECT, getResources().getString(resourceTitleId));
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filePath));
它显示了所有支持的应用,请参见下图:
但附件是所有电子邮件客户端上的工作文件。
我已阅读许多堆栈溢出答案
intent.setType("message/rfc822");
我希望只显示支持附件的电子邮件客户端。
答案 0 :(得分:0)
String recepientEmail = ""; // either set to destination email or leave empty
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:" + recepientEmail));
startActivity(intent);
重点是使用ACTION_SENDTO作为操作,使用mailto:作为数据。如果您想让用户指定目标电子邮件,请使用mailto:;如果您自己指定电子邮件,请使用mailto:name@domain.com
建议的方法过滤所有可以发送电子邮件的应用程序(例如默认的电子邮件应用程序或gmail)