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] 删除。
我来说两句