如何在Android应用程序中附加发送邮件的文件?

时间:2012-02-27 13:55:14

标签: android email

我通过我的申请发送邮件。 为此,我使用以下代码。

    Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"recipient@example.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
i.putExtra(Intent.EXTRA_TEXT   , "body of email");
try {
    startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}

它工作正常,但我想附加一个xml文件。 可能吗?怎么样?

4 个答案:

答案 0 :(得分:5)

在Stack Overflow中已经有很多类似的问题需要完美的解决方案。

您可以看一下:herehere以及here

解决方案是与电子邮件意图一起使用:另外一个 putExtra与Key-Extra_Stream和Value-uri到文件

请通过FAQ来了解如何更好地从网站获益。

答案 1 :(得分:3)

String pathname= Environment.getExternalStorageDirectory().getAbsolutePath();
String filename="/MyFiles/mysdfile.txt";
File file=new File(pathname, filename);
Intent i = new Intent(Intent.ACTION_SEND);
i.putExtra(Intent.EXTRA_SUBJECT, "Title");
i.putExtra(Intent.EXTRA_TEXT, "Content");
i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
i.setType("text/plain");
startActivity(Intent.createChooser(i, "Your email id"));

答案 2 :(得分:0)

ACTION_SEND_MULTIPLE应该是操作,然后emailIntent.setType("text/plain");后跟:

ArrayList<Uri> uris = new ArrayList<Uri>();
String[] filePaths = new String[] {"sdcard/sample.png", "sdcard/sample.png"};
for (String file : filePaths)
{
    File fileIn = new File(file);
    Uri u = Uri.fromFile(fileIn);
    uris.add(u);
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(emailIntent);

答案 3 :(得分:0)

使用gmail发送附件:

  1. 文件应位于外部存储设备上或在外部存储设备中创建

    • 为此,您需要将以下内容添加到Android Manifest <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    • 通过

      获取外部路径

      String pathname= Environment.getExternalStorageDirectory().getAbsolutePath();

    • 创建新文件

      File myfile=new File(pathname,filename);

    • 根据您正在应用的逻辑
    • 写入文件
    • 现在是意图

      Intent email=new Intent(android.content.Intent.ACTION_SEND);

      email.setType("plain/text");

    • 添加额外内容

      email.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(myfile)); email.putExtra(Intent.EXTRA_SUBJECT, "my email subject");                                     email.putExtra(Intent.EXTRA_TEXT, "my email text");

    • 开始活动                                     startActivity(Intent.createChooser(email, "E-mail"));