Android在选择器中显示所有电子邮件应用程序,而无需编写新电子邮件

Android在选择器中显示所有电子邮件应用程序,而无需编写新电子邮件,android,Android,在我的应用程序中,我希望发送一封服务器端身份验证电子邮件。我想打开一个选择器,显示设备上可用的所有电子邮件应用程序 我可以使用以下代码行执行此操作: Intent emailIntent = new Intent(Intent.ACTION_SENDTO); emailIntent.setData(Uri.parse("mailto:")); 问题1:这将始终构成一条空消息,我只想显示每个电子邮件应用程序,以便用户将被定向到所需的收件箱 经过进一步研究,我发现我可以通过添加类别类型打开电子

在我的应用程序中,我希望发送一封服务器端身份验证电子邮件。我想打开一个选择器,显示设备上可用的所有电子邮件应用程序

我可以使用以下代码行执行此操作:

 Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
 emailIntent.setData(Uri.parse("mailto:"));
问题1:这将始终构成一条空消息,我只想显示每个电子邮件应用程序,以便用户将被定向到所需的收件箱

经过进一步研究,我发现我可以通过添加类别类型打开电子邮件应用程序(无需撰写新邮件):

Intent emailIntent = new Intent(Intent.ACTION_MAIN);
emailIntent.addCategory(Intent.CATEGORY_APP_EMAIL);
问题2:此解决方案仅显示默认的电子邮件应用程序(在三星设备上测试意味着仅显示“电子邮件”应用程序,而不显示第三方应用程序,如Gmail、Outlook等)。这并不理想,因为我想让用户能够打开他们选择的电子邮件客户端

大多数在线资源显示了如何通过自己的应用程序发送电子邮件,但是我没有找到任何方法向用户显示每个电子邮件应用程序,而是撰写新电子邮件


任何帮助都将不胜感激,谢谢

您的
分类应用程序\u电子邮件是。是的,从理论上说,它应该给你你想要的。尝试:

Intent.makeMainSelectorActivity(Intent.ACTION_MAIN,
    Intent.CATEGORY_APP_EMAIL);
看看这是否能满足你的需求

我想打开一个选择器,显示设备上可用的所有电子邮件应用程序


请记住,用户可能没有使用这些。他们可能在浏览器中使用Web邮件。他们可能无法在移动设备上访问电子邮件。他们可能不使用电子邮件。他们可能认为电子邮件是老年人的东西。等等。

谢谢您的回答@commonware。使用makeMainSelectoyActivity()将直接打开默认电子邮件应用程序,而不显示choose。我完全同意这是一个不会覆盖所有用例的解决方案,但我们觉得让用户“检查收件箱”而不给他们一个选项是有点懒惰的。谢谢找到解决方案了吗?@jayeffkay我最终创建了一个流行电子邮件客户端软件包名称的白名单,然后创建了一个选择器(如果已安装)。不适合使用其他电子邮件客户端的用户,但这似乎是最简单的选择您可以分享如何实现此功能的代码/想法吗?