2012-02-27 71 views
4

我通过我的应用程序发送邮件。 为此,我正在使用以下代码。如何在Android应用程序中使用发送邮件附加文件?

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("text/plain"); 
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); 
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文件。 这可能吗?怎么样?

回答

5

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

你可以看看几个:hereherehere

解决方案是与电子邮件的意图使用:一个更putExtra用Key-Extra_Stream和Value-URI到文件

请仔细阅读FAQ以便了解如何从网站获得更好的效果。

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); 
0

对于有Gmail发送附件:

  1. 文件应在外部存储装置或外部存储装置

    创建
    • 为此,您需要将以下内容添加到Android清单 <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"));

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")); 
相关问题