试图通过电子邮件发送文件

时间:2014-04-23 14:09:17

标签: java android android-intent email-attachments

我正在尝试通过电子邮件在我的应用中发送我的CSV文件。当我点击发送它时,它显示我发送给的人,主题,消息和附件,但是当它发送电话时说“#34;它不可能显示附加的文件"。当我检查我的电子邮箱时,邮件就在那里但没有文件。

String to=destinatario.getText().toString().trim();
                String subj=subject.getText().toString().trim();
                String msg=message.getText().toString().trim();

                if(to.length() < 1)
                {
                    Toast.makeText(getApplicationContext(), "Mete para quem quer mandar", Toast.LENGTH_LONG).show();
                }
                else if (subj.length() < 1) {
                    Toast.makeText(getApplicationContext(), "Introduza o Tema", Toast.LENGTH_LONG).show();
                }
                else if (msg.length() < 1) {
                    Toast.makeText(getApplicationContext(), "Introduza Mensagem", Toast.LENGTH_LONG).show();
                }
                else {
                    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
                    //emailIntent.setType("image/jpeg");
                    emailIntent.setType("message/rfc822");
                    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{to}); 
                    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subj); 
                    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, msg); 
                    emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(file.getAbsolutePath()));
                    startActivity(Intent.createChooser(emailIntent, "A enviar..."));
                }   
            }

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:1)

将额外的流Uri.parse字符串更改为"file://" + file.getAbsolutePath()

只要您的文件是正确的文件

,这就应该有效

答案 1 :(得分:0)

我使用以下代码使用csv附件创建一个intent。

ArrayList<Uri> uriList = new ArrayList<Uri>();
    ArrayList<String> fileNameList = new ArrayList<String>();
    uriList.add(Uri.fromFile(f));
    fileNameList.add(f.getName());

    final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
    emailIntent.setType("text/plain");
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
            new String[]{""});
    emailIntent.putExtra(android.content.Intent.EXTRA_CC,
            new String[]{""});
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Log");

    if (!uriList.isEmpty()) {
        emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
        emailIntent.putStringArrayListExtra(Intent.EXTRA_TEXT, fileNameList);
    }