【问题标题】:Android app email recipient option not functioningAndroid 应用程序电子邮件收件人选项不起作用
【发布时间】:2020-10-04 13:32:47
【问题描述】:

我正在使用以下示例尝试向特定收件人发送电子邮件。

https://developer.android.com/guide/components/intents-common.html#Email

电子邮件客户端弹出,但收件人:字段为空...有什么想法吗?

根据上述网页中的文档,我提到 EXTRA_EMAIL 填写收件人电子邮件地址

Intent.EXTRA_EMAIL 所有“收件人”电子邮件地址的字符串数组。

这里是代码

 Intent intent = new Intent(Intent.ACTION_SENDTO);
                intent.setData(Uri.parse("mailto:")); // only email apps should handle this
                intent.putExtra(Intent.EXTRA_EMAIL, "testemail@gmail.com");
                intent.putExtra(Intent.EXTRA_SUBJECT, "Title of the email");
                if (intent.resolveActivity(getPackageManager()) != null) {
                    startActivity(intent);
                }

【问题讨论】:

    标签: java android


    【解决方案1】:

    到地址应该是一个字符串数组:

    intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "me@somewhere.com" });
    

    【讨论】:

    • 谢谢。看到你的回答我才恍然大悟。
    【解决方案2】:

    注意ACTION_SENDTO 本身就是not documented to support EXTRA_EMAIL or EXTRA_SUBJECT。恕我直言,更安全的方法是正确使用mailto:

                Intent intent = new Intent(Intent.ACTION_SENDTO);
                intent.setData(Uri.parse("mailto:testemail@gmail.com"));
    

    【讨论】:

      【解决方案3】:

      正如文档和其他答案中所述,地址应该是数组。这是我用来撰写电子邮件的 Helper 类

      public class EmailComposer {
      
          private Activity activity;
          private String subject;
          private String[] addresses;
      
          public EmailComposer(Activity activity, String subject, String[] addresses) {
              this.activity = activity;
              this.subject = subject;
              this.addresses = addresses;
      
          }
      
          public void composeEmail() {
              Intent intent = new Intent(Intent.ACTION_SENDTO);
              intent.setData(Uri.parse("mailto:")); // only email apps should handle this
              intent.putExtra(Intent.EXTRA_EMAIL, addresses);
              intent.putExtra(Intent.EXTRA_SUBJECT, subject);
              if(activity!=null) {
                  if (intent.resolveActivity(activity.getPackageManager()) != null) {
                      activity.startActivity(intent);
                  }
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-05
        相关资源
        最近更新 更多