Intent中的Action_Send_Multiple无法正常工作

时间:2016-09-26 10:03:41

标签: java android email android-intent

我尝试从多个EditText发送电子邮件并为其提取文字。但是当我点击按钮时,我只看到电子邮件正文中的最后一个EditText

请告诉我'错了吗?

private View.OnClickListener myListener = new View.OnClickListener() {
    public void onClick(View v) {
        Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
        emailIntent.setType("message/rfc822"); //specifies message for email app.
        emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"my_email@gmail.com"} );
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Заявка на замер");
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Имя клиента: " + getOrderName());
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Номер телефона : " + getOrderPhone());
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Адрес : " + getOrderAdress());
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Дата : " + getOrderDate() );
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Удобное время : " + getOrderTime() );
        startActivity(Intent.createChooser(emailIntent, "Выберите почтовый сервис"));
    }
};

在电子邮件正文中我只看到最后一个:

Удобное время 

4 个答案:

答案 0 :(得分:1)

尝试如下,它适用于你

通过合并字符串,您可以实现您想要的

    private View.OnClickListener myListener = new View.OnClickListener() {
            public void onClick(View v) {
                Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
                emailIntent.setType("message/rfc822"); //specifies message for email app.
                emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"my_email@gmail.com"} );
                emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Заявка на замер");


                String body ="Имя клиента: " + getOrderName()+"\n"+
                             "Номер телефона : " + getOrderPhone()+"\n"+
                             "Адрес : " + getOrderAdress()+"\n"+
                             "Дата : " + getOrderDate()+"\n"+
                             "Удобное время : " + getOrderTime();
                emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, body);
                startActivity(Intent.createChooser(emailIntent, "Выберите почтовый сервис"));


            }
    };

快乐的编码!

答案 1 :(得分:1)

在您为案例设置新值时每次更换StringBuilder时,您需要使用EXTRA_TEXT

你可能会做这样的事情。

StringBuilder sb;

sb.append("Имя клиента: " + getOrderName());
sb.append('\n');
sb.append("Номер телефона : " + getOrderPhone());
sb.append('\n');
sb.append("Адрес : " + getOrderAdress());
sb.append('\n');
// ... Others 

emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,sb);

答案 2 :(得分:1)

您尝试发送的额外文本是一键标识符。因此,每当你把它放入时它都会被替换掉。这就是为什么只添加你的上一个putExtra的原因。

尝试连接您的消息字符串,然后将其添加到putExtra。

答案 3 :(得分:0)

可能会有所帮助。 创建一个字符串“email_body”并将整个电子邮件的一部分放入其中,然后将其传递给Intent。

String email_body="Имя клиента: "+getOrderName()+"\nНомер телефона : "+getOrderPhone()+.......+ getOrderTime();

然后在你的点击监听器中执行此操作。

    Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
    emailIntent.setType("message/rfc822"); //specifies message for email app.
    emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"my_email@gmail.com"} );
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Заявка на замер");
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,email_body);
    startActivity(Intent.createChooser(emailIntent, "Выберите почтовый сервис"));