android发送带有文件的电子邮件

android发送带有文件的电子邮件,android,file,email,Android,File,Email,我需要发送带有多个文件的电子邮件(仅使用电子邮件客户端)。我该怎么做? 当我尝试使用ACTION\u SEND\u MULTIPLE时,我无法仅获取电子邮件客户端,但当我使用ACTION\u SEND to时,我无法附加文件。我的代码 Log.d(TAG, "Selected documents count = " + documents.size()); if (documents.size() == 0) { Toast.makeTex

我需要发送带有多个文件的电子邮件(仅使用电子邮件客户端)。我该怎么做? 当我尝试使用ACTION\u SEND\u MULTIPLE时,我无法仅获取电子邮件客户端,但当我使用ACTION\u SEND to时,我无法附加文件。我的代码

        Log.d(TAG, "Selected documents count = " + documents.size());
        if (documents.size() == 0) {
            Toast.makeText(this, "Nothing selected", Toast.LENGTH_LONG).show();
            return;
        }
        Intent sendMailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
        sendMailIntent.setType("message/rfc822");
        ArrayList<Uri> uris = new ArrayList<Uri>();
        for (Document document : documents) {
            Log.d(TAG, "FilePath = " + document.getLocalPdfFile());
            uris.add(Uri.parse("file://" + document.getLocalPdfFile()));
        }

        sendMailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
        startActivity(sendMailIntent);
Log.d(标记“所选文档计数=”+documents.size());
if(documents.size()==0){
Toast.makeText(这是“未选择任何内容”,Toast.LENGTH_LONG).show();
回来
}
Intent sendMailIntent=新意图(Intent.ACTION\u SEND\u MULTIPLE);
setType(“message/rfc822”);
ArrayList URI=新的ArrayList();
用于(文档:文档){
Log.d(标记,“FilePath=“+document.getLocalPdfFile());
add(Uri.parse(“文件:/”+document.getLocalPdfFile());
}
sendMailIntent.putParcelableArrayListExtra(Intent.EXTRA\u流,URI);
startActivity(sendMailIntent);

这段代码运行良好。它发送文件。问题是如何只向用户显示电子邮件客户端,因为许多其他程序都可以处理多个操作。

我发现的问题是,gmail有时可以很好地提取附件,但不是本地电子邮件客户端,有时则相反

试试ACTION\u SEND,您的选择器中可能有一些额外的选项,但我发现它更可靠

    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    emailIntent.setType("plain/text");

    //....same as in your code.

    startActivity(Intent.createChooser(emailIntent, "Send email..."));

祝你好运。

“我需要发送包含多个文件的电子邮件(仅使用电子邮件客户端)——不,你需要让用户做用户想做的事情。如果用户想要发送电子邮件,可以。如果用户希望使用其他选项来处理这些文件,可以。它是用户的设备、用户的文件、用户的应用程序、用户的电池寿命、用户的带宽等。请允许用户以用户想要的方式使用他们的设备。
EXTRA\u STREAM
需要一个字符串或Uri,而不是Uri的数组列表或其他任何内容。请将按钮重命名为“发送”,或使用
ShareActionProvider
。然后,使用
ACTION\u SEND\u MULTIPLE
。您可以立即使您的应用程序更有用,并避免“此问题”。对不起,我只是使用了“多次发送”操作(复制了错误的代码)。我的问题是如何只向用户显示电子邮件客户端,因为此操作不仅可以由电子邮件客户端处理。这意味着用户将在选择器列表中看到许多其他程序。此代码还将要求用户从列表中选择一个程序,该程序将包含所有可以处理发送操作的应用程序,而不仅仅是电子邮件客户端。就像我说的“您的选择器中可能有一些额外的选项”