小编典典

发送电子邮件意图

all

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 等。什么代码会产生这样的对话框?


阅读 134

收藏
2022-03-04

共1个答案

小编典典

当您像下面一样更改您的 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

2022-03-04