3

我在这里和其他地方找到了关于创建发送电子邮件的意图的各种主题,这似乎很简单。我正在寻找启动用户可能拥有的任何电子邮件客户端的意图。

这是我看到的发送电子邮件的代码(仅供参考,这不符合我的需求,因为我不想发送新消息):

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("text/plain"); 
i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"recipient@example.com"}); 
i.putExtra(Intent.EXTRA_SUBJECT, "Subject of the message"); 
i.putExtra(Intent.EXTRA_TEXT   , "Body of the message"); 

以下是我为通过包名称专门启动 Gmail 客户端而编写的代码:

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.google.android.gm");
startActivity(intent);

上面的代码有效,但不够灵活,因为用户可能使用的不是 Gmail,而是其他内置电子邮件应用程序或第 3 方电子邮件应用程序。我正在寻找在这种情况下会调出选择器的意图,以便用户可以决定启动哪个应用程序来阅读电子邮件。

有谁知道如何做到这一点?

4

3 回答 3

5

可以以某种方式使用 mailto URL 来完成此操作吗?--Edit-- 我能够使用以下代码示例完成此操作:

mt = MailTo.parse("mailto:yourname@gmail.com");
sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{mt.getTo()});
sendIntent.putExtra(Intent.EXTRA_TEXT, "");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Enter a subject");
sendIntent.setType("message/rfc822");
startActivity(Intent.createChooser(sendIntent, "Send a Message:"));
于 2011-01-23T04:41:50.140 回答
1

另一种方法可能是 Intent.createChooser(); 并让用户选择合适的应用程序。

顺便说一句,该列表不仅可以包含电子邮件应用程序

于 2010-06-30T10:09:29.023 回答
0

有谁知道如何做到这一点?

没有这样的Intent——您可以通过检查电子邮件应用程序的清单来判断这一点。

您唯一能做的就是为自己构建一个您希望链接到的电子邮件客户端列表,并PackageManager为每个客户端使用上面显示的代码。

于 2010-06-30T09:09:07.623 回答