如何限制android应用程序中的电子邮件意图?

如何限制android应用程序中的电子邮件意图?,android,email,android-intent,Android,Email,Android Intent,我正在使用此代码从我的应用程序中使用电子邮件应用程序 String mailText = "Full Name:" + fname.getText().toString(); String subject = "Support"; Intent email = new Intent(Intent.ACTION_SEND); email.putExtra(Intent.EXTRA_EMAIL, new String[] { "support@roncocala.com" }); email.pu

我正在使用此代码从我的应用程序中使用电子邮件应用程序

String mailText = "Full Name:" + fname.getText().toString();
String subject = "Support";
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[] { "support@roncocala.com" });

email.putExtra(Intent.EXTRA_SUBJECT, subject);
email.setType("plain/text");

email.putExtra(Intent.EXTRA_TEXT, mailText);

startActivity(Intent.createChooser(email, "Choose an Email client :"));

但它显示了额外的应用程序,如SKype和ES文件局域网。有没有办法将这些应用程序限制为gmail、yahoo、hotmail等邮件应用程序。请提供帮助。谢谢。

要仅获取电子邮件客户端,您需要使用android.content.Intent.ACTION\u SENDTO:

new Intent(Intent.ACTION_SENDTO); // return only the list of e-mail clients

您需要在这些电子邮件客户端应用程序上配置电子邮件帐户,否则会出现错误:“没有应用程序可以执行此操作”。

操作\u SENDTO似乎只适用于较新的操作系统(至少API级别17+)

不幸的是,如果你想支持旧的Android操作系统,这是目前限制应用程序列表的“最佳”方式


emailIntent.setType(“message/rfc822”)

以上解决方案都不适合我。经过大量的搜索和测试,我终于找到了一个好的解决方案。感谢开源开发人员分享他/她的简洁简洁的解决方案

String mailto = "mailto:bob@example.org" +
    "?cc=" + "alice@example.com" +
    "&subject=" + Uri.encode(subject) +
    "&body=" + Uri.encode(bodyText);

Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse(mailto));

try {
  startActivity(emailIntent);
} catch (ActivityNotFoundException e) {
  //TODO: Handle case where no email app is available
}

并且是指向他/她的要点的链接。

可能重复的内容是“没有应用程序可以执行此操作”。尽管我有gmail和mail帐户。这些电子邮件应用程序上是否配置了任何帐户?