2 csh 34 csh_34 于 2013.01.21 13:08 提问

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

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

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系统中使用电子邮件客户端发送电子邮件时,就不能添加附件。邮件内容中所有的文本、标题都有,就是没有附件。
这是怎么回事呢?

2个回答

baimy1985
baimy1985   2013.01.21 19:24
已采纳

这段代码没看出来问题,下面的代码是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);
       }
    }
suannai0314
suannai0314 看看这回对不,我又将代码全部重选然后再用代码格式,似乎是好了。目前猜测是格式部分出现了问题,代码高亮是4个空格,之前的那个情况反馈给技术人员了~给您带来不便非常抱歉
4 年多之前 回复
baimy1985
baimy1985 这个代码编辑器怎么了,我哪里用错了,怎么是这个效果
4 年多之前 回复
nana4ever
nana4ever   2013.01.22 10:17

请使用下面这个方法:

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:"));
Csdn user default icon
上传中...
上传图片
插入图片