电子邮件意图未显示选择器

Posted

技术标签:

【中文标题】电子邮件意图未显示选择器【英文标题】:Email Intent not showing the chooser 【发布时间】:2010-12-20 02:35:43 【问题描述】:

我正在使用以下方式发送电子邮件:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc882"); 
i.putExtra(Intent.EXTRA_EMAIL, new String[]s);
startActivity(Intent.createChooser(i, "Send mail..."));

我遇到的问题是(在我的手机上)它会打开 Gmail 的撰写窗口,而不是让我选择我想用哪个电子邮件客户端发送邮件。

我做错了吗,还是默认电子邮件客户端没有响应电子邮件发送意图?

【问题讨论】:

【参考方案1】:

它可能不会响应 message/rfc882 Intents。如果可以,请尝试使用 text/plain,因为我很确定它有效。

【讨论】:

愚蠢的我......我以为我已经尝试过了,但结果我输入了plain/text而不是text/plain。叹息。 其实,这可能间接是我的错。 androidSnippets.org 有一个 sn-p,我有时会指向它并从中剪辑,并且 that 有纯文本/文本而不是文本/纯文本。奇怪的是,你从那里得到了错字。 也许……我不记得了。我确实在谷歌上搜索过,但那是一两周前的事了。 伙计们,我从某个地方用过同样愚蠢的 sn-p。猜猜它很普遍。 此意图并非严格用于发送电子邮件。它用于与接受纯文本格式数据的应用程序共享。 Gmail 恰好符合该约束条件。【参考方案2】:

使用text/plain 是一个常见的误解。这将触发任何可以在没有任何上下文的情况下处理纯文本文件的应用程序,包括 Google Drive、Dropbox、Evernote 和 Skype。

改为使用ACTION_SENDTO,提供mailto: Uri:

intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"));
startActivity(intent);

【讨论】:

很好的答案 - 将其直接发送到邮件客户端,而不是 8 个以上的选项(包括 Google Drive,它是 ACTION_SEND 的有效目标,即使指定了“text/plain”,它也存在于大多数设备上。

以上是关于电子邮件意图未显示选择器的主要内容,如果未能解决你的问题,请参考以下文章

从联系人选择器意图中选择电子邮件、姓名和电话号码

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

如何从联系人中获取电子邮件和姓氏?

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

电子邮件意图值未设置为“TO”:地址

无法通过电子邮件意图发送图像附件