我一直在工作的安卓程序发送电子邮件与附件(图像文件,音频文件等)使用意图与ACTION_SEND
。当电子邮件只有一个附件时,程序就可以工作了。我使用Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
将指定的图像文件附加到邮件中,它工作正常,邮件可以通过Gmail递送。然而,当我尝试通过多次调用Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
将多个图像附加到同一邮件中时,它无法工作。电子邮件中未显示任何附件。
我搜索了SDK文档和Android编程用户组关于电子邮件附件的信息,但没有找到任何相关信息。但是,我发现还有另一个intent常量ACTION_SEND_MULTIPLE
(从API4开始提供),它可能满足我的需求。根据SDK文档,它只是简单地说明它将多个数据传递给其他人,它的工作方式与ACTION_SEND
类似,只是数据是多个。但是我仍然不知道这个命令的正确用法。我试着用ACTION_SEND_MULTIPLE
声明意图,然后多次调用putExtra(EXTRA_STREAM, uri)
来附加多个图像,但我得到了和以前一样的错误结果,附件都没有出现在电子邮件中。
有没有人试过用ACTION_SEND_MULTIPLE
处理多个电子邮件附件?
发布于 2010-07-21 22:45:05
下面是创建包含多个附件的emailIntent所需的代码。
public static void email(Context context, String emailTo, String emailCC,
String subject, String emailText, List<String> filePaths)
{
//need to "send multiple" to get more than one attachment
final Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[]{emailTo});
emailIntent.putExtra(android.content.Intent.EXTRA_CC,
new String[]{emailCC});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, emailText);
//has to be an ArrayList
ArrayList<Uri> uris = new ArrayList<Uri>();
//convert from paths to Android friendly Parcelable Uri's
for (String file : filePaths)
{
File fileIn = new File(file);
Uri u = Uri.fromFile(fileIn);
uris.add(u);
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
context.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
}
发布于 2011-01-06 03:50:22
ACTION_SEND_MULTIPLE
应该是操作
然后是emailIntent.setType("text/plain");
然后是:
ArrayList<Uri> uris = new ArrayList<Uri>();
String[] filePaths = new String[] {"sdcard/sample.png", "sdcard/sample.png"};
for (String file : filePaths)
{
File fileIn = new File(file);
Uri u = Uri.fromFile(fileIn);
uris.add(u);
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(emailIntent);
这对我很有效。
发布于 2013-02-22 18:42:04
虽然这是一个老帖子,但当它显示在谷歌搜索的顶部时,我想添加一个小提示来使它完整,因此我偶然发现了它。
有必要使附件对于邮件活动可读,否则它们将不会被附加。所以你得找个地方打个电话
fileIn.setReadable(true, false)
https://stackoverflow.com/questions/2264622
复制相似问题