无法使用意图(Gmail)从我的应用发送包含附件的电子邮件

时间:2013-03-13 15:21:07

标签: android android-intent email-attachments

我正在尝试使用Intent发送sdcard文件夹中包含的文件(.log文件)。这是代码:

public void sendMail() {
            Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"name.surname@gmail.com"});
            intent.putExtra(Intent.EXTRA_SUBJECT, "Log files");
            intent.putExtra(Intent.EXTRA_TEXT, "body");
            //has to be an ArrayList
            ArrayList<Uri> uris = new ArrayList<Uri>();
            //convert from paths to Android friendly Parcelable Uri's
            if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
                File root = Environment.getExternalStorageDirectory();

                File logfolder = new File(root, "log");


                for (String file : logfolder.list()){
                    Uri u = Uri.parse(file);
                    uris.add(u);
                }
                intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
                startActivity(Intent.createChooser(intent, new String("Send mail...")));
            }

        }

我从菜单中选择Gmail。 Gmail打开后,会正确显示包含收件人,主题,文本和附件的邮件。邮件被发送没有错误,但我收到状态栏通知,说“无法显示附件”!事实上,收件人正确收到电子邮件但没有附件。 我无法弄清问题是什么。为什么附件没有被发现?请帮帮我!!

1 个答案:

答案 0 :(得分:5)

确定。我找到了解决方案。需要替换这个:

for (String file : logfolder.list()){
   Uri u = Uri.parse(file);
   uris.add(u);
}

用这个:

for (File file : logfolder.listFiles()){
    Uri u = Uri.fromFile(file);
    uris.add(u);
}