发送电子邮件时添加多个附件

我想在发送一个电子邮件添加多个附件

Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"email1@email.com", "email2@email.com"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "The Subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "The Text");
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
emailIntent.setType("text/plain");
startActivity( Intent.createChooser(emailIntent, "Send Email Using: ") );

我用gmail发送电子邮件时没有问题。当我在android系统中使用电子邮件客户端发送电子邮件时,就不能添加附件。邮件内容中所有的文本、标题都有,就是没有附件。
这是怎么回事呢?

这段代码没看出来问题,下面的代码是android源码中邮件处理Intent.ACTION_SEND_MULTIPLE的代码,感觉要调试看看是不是在addAttachmentFromSendIntent(uri)里面有什么异常了,也可能是uri的问题,现在还无法确定。

 if (Intent.ACTION_SEND_MULTIPLE.equals(mAction)
                && intent.hasExtra(Intent.EXTRA_STREAM)) {
            ArrayList<Parcelable> list =   intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
            if (list != null) {
                for (Parcelable parcelable : list) {
                    Uri uri = (Uri) parcelable;
                    if (uri != null) {
                        addAttachmentFromSendIntent(uri);
                    }
               }
      }}

     private void addAttachmentFromSendIntent(Uri uri) {
          final Attachment attachment = loadAttachmentInfo(uri);
          final String mimeType = attachment.mMimeType;
          if (!TextUtils.isEmpty(mimeType) && MimeUtility.mimeTypeMatches(mimeType,
            AttachmentUtilities.ACCEPTABLE_ATTACHMENT_SEND_INTENT_TYPES)) {
         addAttachment(attachment);
       }
    }

请使用下面这个方法:

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

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

           String[] filePaths = new String[] {image1 Path,image2 path};
           for (String file : filePaths)
           {
               File fileIn = new File(file);
               Uri u = Uri.fromFile(fileIn);
               uris.add(u);
           }

        if ( !(app_preferences.getString("email", "") == null || app_preferences.getString("email", "").equals(""))) {
            emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {app_preferences.getString("email", "")});    
        }

        emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject name");
        emailIntent.putExtra(Intent.EXTRA_TEXT, "Please find the attachment.");
        emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);

        startActivity(Intent.createChooser(emailIntent, "Email:"));

想解决:对100人批量发送邮件,这100人的附件都是唯一,每人有两个附件(如每人都有一份1、年度考评结果-工作薄,2、年度考评报告-Word)