如何将多个文件附加到android中的电子邮件客户端

N-J*_*JOY 28 android android-intent

Intent .ACTION_SEND用来获取默认的电子邮件客户端.它工作正常,但现在我需要附加多个文件到电子邮件.

email.putExtra(android.content.Intent.EXTRA_STREAM,...) 只附上最后一个uri添加到它.

那么我可以附加多个文件吗?我认为这可以通过使用来完成Intent.ACTION_SEND_MULTIPLE.这是我正在尝试的代码:

String uri=getScreenShot();

Intent email = new Intent(android.content.Intent.ACTION_SEND);
            email.setType("application/octet-stream");
            email.putExtra(Intent.EXTRA_STREAM, Uri.parse(uri));
            email.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("file:"+csvpath));
            alert.dismiss();
            ctx.startActivity(Intent.createChooser(email, "Send mail..."));
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Her*_*r K 52

这样可行:

final Intent ei = new Intent(Intent.ACTION_SEND_MULTIPLE);
ei.setType("plain/text");
ei.putExtra(Intent.EXTRA_EMAIL, new String[] {"me@somewhere.nodomain"});
ei.putExtra(Intent.EXTRA_SUBJECT, "That one works");
Run Code Online (Sandbox Code Playgroud)

然后添加文件'uris:

ArrayList<Uri> uris = new ArrayList<Uri>();

ei.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivityForResult(Intent.createChooser(ei, "Sending multiple attachment"), 12345);
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

  • ACTION_SEND_MULTIPLE做的工作:) (3认同)

San*_*esh 9

您可以使用 putParcelableArrayListExtraIntent的方法,如下所示.而不是像这样使用:email.putExtra(Intent.EXTRA_STREAM, Uri.parse(uri));,你可以使用 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);
}
email.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
Run Code Online (Sandbox Code Playgroud)

  • 是的,我这样做但它在打开gmail客户端时给出了nullpointerexception.在打开默认电子邮件客户端时,它不显示任何附件. (4认同)