afo*_*eca 3 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");
Run Code Online (Sandbox Code Playgroud)
以下是我根据包名称专门启动Gmail客户端的代码:
PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.google.android.gm");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
上述代码有效但不灵活,因为用户可能没有使用Gmail,而是使用其他内置电子邮件应用程序或第三方电子邮件应用程序.我正在寻找一个能够在这种情况下调出选择器的意图,以便用户可以决定启动哪个应用来阅读电子邮件.
有谁知道如何做到这一点?
可以以某种方式使用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:"));
Run Code Online (Sandbox Code Playgroud)