通过电子邮件发送多个附件和预填充电子邮件



我确实以下:

Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { receiver });
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); // uris is a array list!

然后我尝试添加以下内容:

intent.putExtra(Intent.EXTRA_TEXT, "text");

这添加了一个日志行,抱怨该文本不是数组列表。不过有效,但是电子邮件没有正文

,或者我尝试了以下内容:

ArrayList<String> texts = new ArrayList();
for (int i = 0; i < uris.size(); i++)
    texts.add("Test");
intent.putParcelableArrayListExtra(Intent.EXTRA_TEXT, texts);

这删除了日志警告,但电子邮件仍然没有任何身体。

问题

如何将多个文件附加到邮件中,并用一些文本预填充身体?

如何将多个文件附加到邮件中,并用一些文本预填充身体?

一般来说,你不。

引用ACTION_SEND_MULTIPLE的文档:

get*arraylistextra可以具有 a extair_text extra_s> Extra_Stream字段,其中包含要发送的数据

(添加了强调)

您试图将两者都包括在Intent规范的边界之外。

用户可以为您的ACTION_SEND_MULTIPLE Intent选择许多应用程序。这些应用程序中的每个应用程序对Intent的作用取决于这些应用程序的开发人员。可能的候选人是:

  • 忽略EXTRA_TEXT,如您所见
  • 忽略EXTRA_STREAM
  • 荣誉
  • 崩溃可怕

ACTION_SEND也是如此(您可以具有EXTRA_TEXTEXTRA_STREAM,而不是两者)。

这是我的代码,我用来将多个图像附加到电子邮件。

Intent i = new Intent(Intent.ACTION_SEND_MULTIPLE); i.setType("image/png"); i.putExtra(Intent.EXTRA_SUBJECT, "EMAIL SUBJECT"); i.putExtra(Intent.EXTRA_TEXT, "Email Body content....");

在这里,我将2张图像硬编码到我需要发送电子邮件意图选择器的ArrayList:

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.slide_1); String path = MediaStore.Images.Media.insertImage(getContentResolver(), largeIcon, "title", null); Bitmap largeIcon1 = BitmapFactory.decodeResource(getResources(), R.drawable.slide_2); String path1 = MediaStore.Images.Media.insertImage(getContentResolver(), largeIcon1, "title", null); ArrayList<Uri> screenshotUri = new ArrayList<>(); screenshotUri.add(Uri.parse(path)); screenshotUri.add(Uri.parse(path1));

现在ArrayList<Uri>添加到意图方法中。

i.putParcelableArrayListExtra(Intent.EXTRA_STREAM, screenshotUri); startActivity(Intent.createChooser(i, "Send mail"));

希望这对您有帮助...

相关内容

  • 没有找到相关文章

最新更新