如何创建启动任何电子邮件应用程序的意图?
-
01-10-2019 - |
题
我在这里和其他地方发现了有关发送电子邮件的意图的各种主题,这似乎很简单。我正在寻找一个意图,只是启动用户可能拥有的任何电子邮件客户端。
这是我看到的发送电子邮件的代码(仅发布参考,这不满足我的需求,因为我不想发送新消息):
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,而是其他内置电子邮件应用程序或第三方电子邮件应用程序。在这种情况下,我正在寻找可以提出选择器的意图,以便用户可以决定要启动哪个应用程序以读取电子邮件。
有人知道如何实现这一目标吗?
解决方案
有人知道如何实现这一目标吗?
不存在这样的 Intent
- 您可以通过检查电子邮件应用程序的清单来告诉这一点。
您唯一可以做的就是构建自己要链接到并使用的电子邮件客户端的列表 PackageManager
您在上面显示的代码。
其他提示
可以以某种方式使用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:"));
另一种方法可以是意图。CreateChooser();并让用户选择正确的应用程序。
顺便说一句,列表不仅包含电子邮件应用程序
不隶属于 StackOverflow