电子邮件意图不再适用于Android Lollipop

时间:2014-11-03 11:03:22

标签: android android-intent android-5.0-lollipop

我一直在使用以下代码在Android中启动Intent来发送电子邮件。在Android Lollipop(API级别21)之前,这个工作正常。不幸的是,在Android Lollipop中,这引发了一个不受支持的行动"错误。

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setType("message/rfc822");
intent.setData(Uri.parse("mailto:" + email));
startActivity(intent);

它非常基础,它只是通过电子邮件地址,让用户选择使用哪个应用程序。

我应该如何调整我的代码以使其在api级别上运行?我的最低API级别是16(JellyBean)。

修改 根据评论和答案,我已经包含了MIME类型。

4 个答案:

答案 0 :(得分:5)

我知道了。这是因为没有设置电子邮件帐户。在至少一个电子邮件应用程序中设置一个后,它可以正常工作。

这不是Lollipop的问题。

答案 1 :(得分:0)

您必须添加intent.setType("message/rfc822");,请参阅此详细答案:How can I send emails from my Android application?

答案 2 :(得分:0)

从我的测试中,当意图的URI(来自setData())与任何内容不匹配并且您在其中一个官方Android模拟器上运行时,会出现此问题。这似乎不会发生在真实设备上,所以它不应该成为现实世界的问题。

您可以使用此代码在启动意图之前检测何时发生这种情况:

ComponentName emailApp = intent.resolveActivity(getPackageManager());
ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback");
boolean hasEmailApp = emailApp != null && !emailApp.equals(unsupportedAction);

(显示"不支持的操作的活动的名称"操作方法为com.android.fallback.FallbackActivity。)

答案 3 :(得分:-1)

默认情况下,这个意图会被Android光束消耗,我不会期待这种行为,所以我相信Lollipop一定有问题。