当 WhatsApp 不是邮件应用程序时,为什么 Intent.EXTRA_EMAIL 会导致在选择器对话框中选择 WhatsApp?

光辉索尼
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("email/text");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]"[email protected]"});
startActivity(Intent.createChooser(intent,"Send Mail"));

在这个选择器对话框中,我得到了像“GMail”这样的选项,它工作得很好。当我选择 Gmail 应用程序时,它会根据需要将“收件人”(收件人)填充"[email protected]"为 。

我的问题是,为什么这个选择器也显示“WhatsApp的”当WhatsApp的CAN NOT处理这样的意图。即使我选择 WhatsApp 并尝试发送消息,它也不会执行任何操作(因为 WhatsApp 无法像电子邮件应用程序那样处理填写“收件人”的意图)。该应用程序不会崩溃。

现在我明白 WhatsApp 可能正在听这个意图,因为类型包括“文本”,但如果我尝试使用:

intent.setType("email");

选择器对话框显示“没有应用程序可以执行此功能”。

现在,这是 WhatsApp 开发人员的错吗?或者我是否以错误的方式使用邮件发送意图(然后我应该如何使用它)?

我希望我已经说清楚了,请询问其他需要了解的信息。

谢谢!

共享软件

在这个选择器对话框中,我得到了像“GMail”这样的选项,它工作得很好。

这意味着 Gmail 必须支持*/*MIME 类型通配符模式,因为email/text它不是有效的 MIME 类型。

我的问题是当 WhatsApp 无法处理这样的意图时,为什么这个选择器也会显示“WhatsApp”

WhatsApp 应用程序的开发人员相信他们可以处理这样的Intent.

即使我选择 WhatsApp 并尝试发送消息,它也不会执行任何操作(因为 WhatsApp 无法像电子邮件应用程序那样处理填写“收件人”的意图)。

WhatsApp 忽略的事实EXTRA_EMAIL是完全合理的。ACTION_SEND是一个请求,而不是一个命令。EXTRA_EMAIL建议,不是命令。例如,GmailEXTRA_EMAIL在其ACTION_SEND实施过程中无需注意任何问题碰巧这样做,但不要假设所有ACTION_SEND实现都会关注EXTRA_EMAIL.

如果我尝试使用intent.setType("email");选择器对话框说“没有应用程序可以执行此功能”。

那是因为email不具有 MIME 类型的结构。

或者我是否以错误的方式使用邮件发送意图(然后我应该如何使用它)?

Android 中没有“邮件发送意图”。

ACTION_SEND Intent没有任何东西可以发送,因为它既没有EXTRA_TEXT也没有EXTRA_STREAM因此,许多具有功能的ACTION_SEND活动不会对您的Intent.

JavaDocs forACTION_SEND有点难以阅读,但它解释了 anACTION_SEND Intent的用途以及如何设置。文档也有这个也可能有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档