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

使用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并使用多个电子邮件附件?


皈依舞
浏览 373回答 3
3回答

慕娘9325324

以下是创建包含多个附件的emailIntent所需的代码。public&nbsp;static&nbsp;void&nbsp;email(Context&nbsp;context,&nbsp;String&nbsp;emailTo,&nbsp;String&nbsp;emailCC, &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;subject,&nbsp;String&nbsp;emailText,&nbsp;List<String>&nbsp;filePaths){ &nbsp;&nbsp;&nbsp;&nbsp;//need&nbsp;to&nbsp;"send&nbsp;multiple"&nbsp;to&nbsp;get&nbsp;more&nbsp;than&nbsp;one&nbsp;attachment &nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;Intent&nbsp;emailIntent&nbsp;=&nbsp;new&nbsp;Intent(Intent.ACTION_SEND_MULTIPLE); &nbsp;&nbsp;&nbsp;&nbsp;emailIntent.setType("text/plain"); &nbsp;&nbsp;&nbsp;&nbsp;emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;String[]{emailTo}); &nbsp;&nbsp;&nbsp;&nbsp;emailIntent.putExtra(android.content.Intent.EXTRA_CC,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;String[]{emailCC}); &nbsp;&nbsp;&nbsp;&nbsp;emailIntent.putExtra(Intent.EXTRA_SUBJECT,&nbsp;subject);&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;emailIntent.putExtra(Intent.EXTRA_TEXT,&nbsp;emailText); &nbsp;&nbsp;&nbsp;&nbsp;//has&nbsp;to&nbsp;be&nbsp;an&nbsp;ArrayList &nbsp;&nbsp;&nbsp;&nbsp;ArrayList<Uri>&nbsp;uris&nbsp;=&nbsp;new&nbsp;ArrayList<Uri>(); &nbsp;&nbsp;&nbsp;&nbsp;//convert&nbsp;from&nbsp;paths&nbsp;to&nbsp;Android&nbsp;friendly&nbsp;Parcelable&nbsp;Uri's &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(String&nbsp;file&nbsp;:&nbsp;filePaths) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;fileIn&nbsp;=&nbsp;new&nbsp;File(file); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uri&nbsp;u&nbsp;=&nbsp;Uri.fromFile(fileIn); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uris.add(u); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,&nbsp;uris); &nbsp;&nbsp;&nbsp;&nbsp;context.startActivity(Intent.createChooser(emailIntent,&nbsp;"Send&nbsp;mail..."));}

素胚勾勒不出你

ACTION_SEND_MULTIPLE&nbsp;应该是行动然后&nbsp;emailIntent.setType("text/plain");其次是:ArrayList<Uri>&nbsp;uris&nbsp;=&nbsp;new&nbsp;ArrayList<Uri>();String[]&nbsp;filePaths&nbsp;=&nbsp;new&nbsp;String[]&nbsp;{"sdcard/sample.png",&nbsp;"sdcard/sample.png"};for&nbsp;(String&nbsp;file&nbsp;:&nbsp;filePaths){ &nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;fileIn&nbsp;=&nbsp;new&nbsp;File(file); &nbsp;&nbsp;&nbsp;&nbsp;Uri&nbsp;u&nbsp;=&nbsp;Uri.fromFile(fileIn); &nbsp;&nbsp;&nbsp;&nbsp;uris.add(u);}emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,&nbsp;uris);startActivity(emailIntent);这适合我。

慕虎7371278

虽然这是一个老线程,但由于它在谷歌搜索的顶部显示,我想添加一个小提示,使其完成,因此我弄乱了它。必须使附加文件对邮件活动可读,否则将不会附加它们。所以你必须在某个地方打电话fileIn.setReadable(true,&nbsp;false)
打开App,查看更多内容
随时随地看视频慕课网APP