我一直在使用以下代码在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类型。
答案 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一定有问题。