使用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 回答
SMILET
TA贡献1796条经验 获得超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..."));}
红糖糍粑
TA贡献1815条经验 获得超6个赞
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);
这适合我。
慕无忌1623718
TA贡献1744条经验 获得超4个赞
虽然这是一个老线程,但由于它在谷歌搜索的顶部显示,我想添加一个小提示,使其完成,因此我弄乱了它。
必须使附加文件对邮件活动可读,否则将不会附加它们。所以你必须在某个地方打电话
fileIn.setReadable(true, false)
- 3 回答
- 0 关注
- 500 浏览
添加回答
举报
0/150
提交
取消