【问题标题】:How to limit the email intent in android app?如何限制 Android 应用程序中的电子邮件意图?
【发布时间】:2014-01-06 08:51:14
【问题描述】:

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

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 File Lan 。有没有办法将这些应用程序限制为邮件应用程序,如 gmail、yahoo、hotmail。请帮忙。谢谢。

【问题讨论】:

标签: android email android-intent


【解决方案1】:

要仅获取电子邮件客户端,您需要使用android.content.Intent.ACTION_SENDTO

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

您需要在这些电子邮件客户端应用程序上配置一个电子邮件帐户,否则您将收到错误消息:“没有应用程序可以执行此操作”。

【讨论】:

  • 它说“没有应用程序可以执行此操作”..虽然我有 gmail 和邮件帐户。
  • 这些电子邮件应用程序上是否配置了任何帐户?
【解决方案2】:

ACTION_SENDTO 似乎只适用于较新的操作系统(至少 API LEVEL 17+)。

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

emailIntent.setType("message/rfc822");

【讨论】:

    【解决方案3】:

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

    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
    }
    

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

    【讨论】:

      猜你喜欢
      • 2017-05-16
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多