【问题标题】:Action_Send_Multiple in Intent doesn't work意图中的 Action_Send_Multiple 不起作用
【发布时间】:2017-02-03 14:58:23
【问题描述】:

我尝试从几个EditTexts 发送电子邮件并为其获取文本。但是当我点击按钮时,我只看到电子邮件正文中的最后一个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, "Выберите почтовый сервис"));
    }
};

由于电子邮件正文的结果,我只看到最后一个:

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

【问题讨论】:

  • 检查一下stackoverflow.com/questions/6827407/…>.
  • 每一行都覆盖前面,用整个邮件正文构造一个String并设置一次...

标签: java android email android-intent


【解决方案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, "Выберите почтовый сервис"));


            }
    };

编码愉快!

【讨论】:

    【解决方案2】:

    您需要在您的情况下使用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);
    

    【讨论】:

      【解决方案3】:

      您尝试发送的额外文本是一键标识符。所以,每次你 putExtra 时它都会被替换。这就是为什么只添加最后一个 putExtra 的原因。

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

      【讨论】:

        【解决方案4】:

        也许这会有所帮助。 创建一个字符串“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, "Выберите почтовый сервис"));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多