【发布时间】:2015-07-24 20:17:02
【问题描述】:
我的应用中有代码,可让用户向开发人员发送电子邮件。它应该预先填充 To 字段、Subject 字段和 body 字段。但是,当我运行时,它会填充 To,但会忽略其他 EXTRA,例如主题、正文和选择器文本。我在两台测试设备上看到了这种行为:一台运行 Lollipop(Verizon 三星 Galaxy Note 4),一台运行 Jelly Bean 4.2.2(CM10.1 上的三星 Fascinate,尽管我不知道这是否与问题有关.
private void sendHelpEmail() {
Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
// prompts email clients only
email.setType("message/rfc822");
email.putExtra(Intent.EXTRA_EMAIL, new String[] {getString(R.string.about_email)});
email.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.login_help_subject));
email.putExtra(Intent.EXTRA_TEXT, getString(R.string.login_help_body, classButton.text(), Txt_Student.getText().toString()));
try {
// the user can choose the email client
startActivity(Intent.createChooser(email, getString(R.string.login_help_chooser)));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(mThis, R.string.login_help_error, Toast.LENGTH_LONG).show();
}
}
为什么在填充收件人电子邮件时主题和正文会被忽略?
【问题讨论】:
-
我想知道是否某些收到该意图的电子邮件客户端应用程序忽略了额外内容。
-
它甚至在选择应用程序之前忽略了选择器文本。那么我选择的应用程序是Gmail,所以看起来应该有一些至少可以与Gmail一起使用的意图。
-
当我创建了一个用于发送电子邮件的 Intent 时,我为 Intent 使用了一个参数构造函数(只是操作)。你不应该需要 mailto: 件。此外,您不必调用 setType()。
-
同样的代码适用于我。我建议您验证您的字符串资源是否正常(包括在当前语言/风味/等中未被覆盖)。
-
很奇怪。你在用什么?即使我用硬编码的字符串替换资源,我也会得到相同的结果。