首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Intent的Android多电子邮件附件

使用Intent的Android多电子邮件附件
EN

Stack Overflow用户
提问于 2010-02-15 16:05:08
回答 5查看 70.8K关注 0票数 102

我一直在工作的安卓程序发送电子邮件与附件(图像文件,音频文件等)使用意图与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处理多个电子邮件附件?

EN

回答 5

Stack Overflow用户

发布于 2010-07-21 22:45:05

下面是创建包含多个附件的emailIntent所需的代码。

代码语言:javascript
复制
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..."));
}
票数 189
EN

Stack Overflow用户

发布于 2011-01-06 03:50:22

ACTION_SEND_MULTIPLE应该是操作

然后是emailIntent.setType("text/plain");

然后是:

代码语言:javascript
复制
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);

这对我很有效。

票数 30
EN

Stack Overflow用户

发布于 2013-02-22 18:42:04

虽然这是一个老帖子,但当它显示在谷歌搜索的顶部时,我想添加一个小提示来使它完整,因此我偶然发现了它。

有必要使附件对于邮件活动可读,否则它们将不会被附加。所以你得找个地方打个电话

代码语言:javascript
复制
fileIn.setReadable(true, false)
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2264622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档