通过意图打开邮件应用程序不会打开选择器

Posted

技术标签:

【中文标题】通过意图打开邮件应用程序不会打开选择器【英文标题】:Open mail app via intent doesn't open chooser 【发布时间】:2021-07-31 14:48:56 【问题描述】:

我正在尝试通过 Intent 在 android 上打开一个邮件应用程序。目的是在应用程序中有一个按钮,可以打开您的邮件收件箱。但是当我使用时:

val intent = Intent(Intent.ACTION_MAIN)
intent.addCategory(Intent.CATEGORY_APP_EMAIL)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(Intent.createChooser(intent, "Email"))

它总是打开 gmail,而我也安装了 Outlook。我在邮件应用程序之间进行选择的唯一方法是使用 mailto。但我不打算发送电子邮件,因此不希望使用该意图。

Outlook 不支持这个 Intent 吗?

【问题讨论】:

【参考方案1】:

使用以下 sn-p 直接从其他应用打开到 Outlook

context.startActivity(
            Intent().apply 
                action = Intent.ACTION_MAIN
                addCategory(Intent.CATEGORY_LAUNCHER)
                component = ComponentName(
                   outlookLaunchIntent?.component?.packageName, 
                   outlookLaunchIntent?.component?.className
                )
                setPackage(outlookLaunchIntent.package)
            
        )

com.microsoft.office.outlook是outlook的包名

要将其发送给所有电子邮件客户端,请使用这样的 uri

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.parse("mailto:?subject=" + subject + "&body=" + body);
intent.setData(data);
startActivity(intent);

参考:How to open Email program via Intents (but only an Email program)

【讨论】:

感谢您的快速反应,这确实可以打开 Outlook 应用程序,但是我想在 Gmail 和 Outlook 之间打开一个选择器。也许我的问题没有正确形成。你也有解决方案吗? 添加了参考以及最适合您的用例的答案

以上是关于通过意图打开邮件应用程序不会打开选择器的主要内容,如果未能解决你的问题,请参考以下文章

Android 深层链接 - 不显示意图选择器弹出窗口,强制打开应用

如何在没有选择器意图的情况下直接打开 Google Play 商店应用程序 [重复]

如何解决android电子邮件意图问题?

Android:从存储访问框架获得的 URI 中使用意图选择器打开文件

打开包含多个附件的电子邮件,同时将选择器限制为仅电子邮件应用程序?

Android - 如何从电子邮件选择器列表中排除 PayPal?