我确实以下:
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_TEXT
或EXTRA_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"));
希望这对您有帮助...