在我的应用程序中,我希望发送服务器端身份验证电子邮件。我想打开一个选择器,显示设备上可用的每个电子邮件应用程序。
我可以使用以下代码执行此操作:
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:此解决方案仅显示默认电子邮件应用程序(在Samsung设备上进行测试意味着只显示“电子邮件”应用,而非第三方应用如Gmail,Outlook等)。这并不理想,因为我想让用户能够打开他们选择的电子邮件客户端。
大多数在线资源都显示了如何通过您自己的应用程序发送电子邮件,但我没有找到任何方式向用户显示每个电子邮件应用,但不撰写新电子邮件。
非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
您的CATEGORY_APP_EMAIL
是documented to specifically be not used the way that you are using it。它是for makeMainSelectorActivity()
,理论上应该给你你想要的东西。尝试:
Intent.makeMainSelectorActivity(Intent.ACTION_MAIN,
Intent.CATEGORY_APP_EMAIL);
并查看是否能满足您的需求。
我想打开一个选择器,显示设备上可用的每个电子邮件应用程序。
请记住,用户可能没有使用这些。他们可能会在浏览器中使用Web邮件。他们可能无法在移动设备上访问电子邮件。他们可能不使用电子邮件。他们可能会认为电子邮件适合老年人。等等。