Android ACTION_SEND意图不填充主题或正文

时间:2015-05-13 13:38:36

标签: android android-intent

我的应用程序中有代码,用户可以向开发人员发送电子邮件。它应该预先填充To字段,Subject字段和body字段。 HOwever,当我运行时,它会填充To但忽略其他EXTRA,如Subject,Body和Chooser文本。我在两个测试设备上看到了这种行为:一个运行Lollipop(Verizon Samsung Galaxy Note 4)和一个运行Jelly Bean 4.2.2(三星Fascinate在CM10.1上,虽然我不知道这是否有关于这个问题。

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();
        }
}

为什么在填充收件人电子邮件时会忽略主题和正文?

4 个答案:

答案 0 :(得分:3)

以下代码适合我(只是尝试过):

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL, new String[]{"foo@bar.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
i.putExtra(Intent.EXTRA_TEXT   , "body of email");
try {
  startActivity(Intent.createChooser(i, "Choose email...");
} catch (android.content.ActivityNotFoundException ex) {
    // handle edge case where no email client is installed
}

答案 1 :(得分:2)

尝试这种方法对我有用。

private void sendMail() {

    Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "xx@xx.com", null));
    emailIntent.putExtra(Intent.EXTRA_SUBJECT,getResources().getString(R.string.mail_txt));
    startActivity(Intent.createChooser(emailIntent, "Send email..."));

}         

答案 2 :(得分:2)

Intent intent = new Intent(INTENT.ACTION_SENDTO); 仅启用电子邮件客户端,但由于某些原因未填充某些设备中的SUBJECT BODY字段。 (我认为这些都是极端情况)。

Intent intent = new Intent(INTENT.ACTION_SEND); 调出所有可以发送多部分消息的应用程序,例如:WhatsApp,Telegram,Gmail等,但始终在所有设备中填充SUBJECTBODY字段。

答案 3 :(得分:0)

字面上只是遇到了这个问题而且我的解决方法如下:

检查电子邮件客户端(在我的特定情况下,Gmail)是否只是重新使用未发送的粗糙而不是撰写新电子邮件,因为客户端似乎忽略了Intent.EXTRA_SUBJECTIntent.EXTRA_TEXT