发送电子邮件意图

新手上路,请多包涵
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "emailaddress@emailaddress.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body.");
startActivity(Intent.createChooser(intent, "Send Email"));

上面的代码打开一个对话框,显示以下应用程序:蓝牙、Google Docs、Yahoo Mail、Gmail、Orkut、Skype 等。

实际上,我想过滤这些列表选项。我只想显示与电子邮件相关的应用程序,例如 Gmail 和 Yahoo Mail。怎么做?

我在“Android Market 应用程序”中看到过这样的示例。

  1. 打开 Android 电子市场应用
  2. 打开开发人员指定了他/她的电子邮件地址的任何应用程序。 (如果找不到这样的应用程序,只需打开我的应用程序:-market://details?id=com.becomputer06.vehicle.diary.free,或通过“车辆日记”搜索)
  3. 向下滚动到“开发者”
  4. 点击“发送电子邮件”

该对话框仅显示电子邮件应用程序,例如 Gmail、Yahoo Mail 等。它不显示蓝牙、Orkut 等。什么代码产生这样的对话框?

原文由 dira 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 794
2 个回答

当您像下面一样更改您的 intent.setType 时,您将得到

intent.setType("text/plain");

使用 android.content.Intent.ACTION_SENDTO 仅获取电子邮件客户端列表,没有 facebook 或其他应用程序。只是电子邮件客户端。前任:

 new Intent(Intent.ACTION_SENDTO);

我不建议您直接访问电子邮件应用程序。让用户选择他最喜欢的电子邮件应用程序。不要约束他。

如果您使用 ACTION_SENDTO,putExtra 无法向意图添加主题和文本。使用 Uri 添加主题和正文。

编辑: 我们可以使用 message/rfc822 而不是 "text/plain" 作为 MIME 类型。然而,这并不表示“只提供电子邮件客户端”——它表示“提供任何支持消息/rfc822 数据的东西”。这可能很容易包括一些不是电子邮件客户端的应用程序。

message/rfc822 支持MIME类型 .mhtml, .mht, .mime

原文由 Padma Kumar 发布,翻译遵循 CC BY-SA 3.0 许可协议

String sendEmailTo = "abc@xyz.com";
String subject = "Subject";
String body = "Body";

Uri uri = Uri.parse("mailto:"+sendEmailTo+"?subject="+subject+"&body="+body);

startActivity(new Intent(Intent.ACTION_VIEW, uri);

这对我有用。这只会在意图选择器中显示邮件应用程序。

另外:我遇到这种方法的一个问题是我无法在建议和正文中添加空格。因此,要在建议或正文中添加空格,然后将空格替换为 %20

原文由 Priyankchoudhary 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题