如何创建启动任何电子邮件应用程序的意图?

时间:2010-06-30 08:23:10

标签: android android-package-managers

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

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

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 个答案:

答案 0 :(得分:5)

可以以某种方式使用mailto URL来实现此目的吗? - 编辑 - 我能够使用以下代码示例完成此任务:

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:"));

答案 1 :(得分:1)

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

BTW该列表不仅可以包含电子邮件应用程序

答案 2 :(得分:0)

  

有谁知道如何完成   此?

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

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