The 官方文档 https://developer.android.com/guide/components/intents-common#Email展示如何发送带有附件的电子邮件:
public void composeEmail(String[] addresses, String subject, Uri attachment) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_STREAM, attachment);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
然后它说:
如果您想确保您的意图仅由电子邮件应用程序(而不是其他短信或社交应用程序)处理,请使用ACTION_SENDTO
行动并包括"mailto:"
数据方案。
Like so:
public void composeEmail(String[] addresses, String subject) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:")); // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
但实际上,我想要以上的组合......即发送一封带有附件的电子邮件and仅使用电子邮件应用程序。
但使用时intent.setData(Uri.parse("mailto:"))
结合Intent.ACTION_SEND
or Intent.ACTION_SEND_MULTIPLE
,什么也没发生...根本没有电子邮件应用程序(或应用程序选择器)打开。
那么,如何发送带有附件(或多个附件)的电子邮件,同时将应用程序限制为电子邮件应用程序?