为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

皈依舞 2019-11-17 16:12:55
使用Intent的Android多个电子邮件附件我一直在研究Android程序,使用Intent发送包含附件(图像文件,音频文件等)的电子邮件ACTION_SEND。电子邮件只有一个附件时,该程序正在运行。我曾经Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)将指定的图像文件附加到邮件中,并且工作正常,邮件可以通过Gmail传送。但是,当我尝试通过Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)多次调用将多个图像附加到同一邮件时,它无法正常工作。电子邮件中没有显示任何附件。我搜索了SDK文档和Android编程用户组关于电子邮件附件但找不到任何相关信息。但是,我发现有另一个意图常量ACTION_SEND_MULTIPLE(自API级别4起可用)可能符合我的要求。基于SDK文档,它只是声明它向其他人提供多个数据,它的工作方式类似ACTION_SEND,除了数据是多个。但我还是无法弄清楚这个命令的正确用法。我试图声明意图ACTION_SEND_MULTIPLE,然后putExtra(EXTRA_STREAM, uri)多次调用以附加多个图像,但我得到了与之前相同的错误结果,没有任何附件显示在电子邮件中。有没有人试过ACTION_SEND_MULTIPLE并使用多个电子邮件附件?
查看完整描述

3 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

以下是创建包含多个附件的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..."));}



查看完整回答
反对 回复 2019-11-18
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

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);

这适合我。



查看完整回答
反对 回复 2019-11-18
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

虽然这是一个老线程,但由于它在谷歌搜索的顶部显示,我想添加一个小提示,使其完成,因此我弄乱了它。

必须使附加文件对邮件活动可读,否则将不会附加它们。所以你必须在某个地方打电话

fileIn.setReadable(true, false)


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 370 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信