2012-03-06 14 views
5

Chcę wysłać wysłać kilka plików przez e-mail. Znalazłem to Android multiple email attachments using Intent, ale działa i nie dostaję żadnego komunikatu o błędzie. Po prostu nie załączam plików (próbowałem też wysłać tylko jeden plik, ale otrzymałem taki sam wynik).Android Intent: Wyślij e-mail z załącznikiem

Czy coś nadzorowałem? Masz jakieś sugestie?

private static void email (Context context, String emailTo, String emailCC, 
    String subject, String emailText, List<String> filePaths) 
{ 
    //need to "send multiple" to get more than one attachment 
    final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); 
    emailIntent.setType("text/xml"); 
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, 
     new String[]{emailTo}); 
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailText); 
    //has to be an ArrayList 
    ArrayList<Uri> uris = new ArrayList<Uri>(); 
    //convert from paths to Android friendly Parcelable Uri's 
    for (String file : filePaths) 
    { 
     File fileIn = new File(file); 
     // Uri u = Uri.fromFile(fileIn); 
     Uri u = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "blabla.xml")); 
     Log.v("bla", "filepath: " +u.toString()); 
     uris.add(u); 
     Uri b = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "blabla.es")); 
     uris.add(b); 
     Log.v("bla", "filepath: " +b.toString()); 
    } 
    emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 
    context.startActivity(emailIntent); 
} 

LogCat:

03-06 16:08:50.940: INFO/ActivityManager(69): Starting: Intent { act=android.intent.action.SEND_MULTIPLE typ=text/xml cmp=com.android.email/.activity.MessageCompose (has extras) } from pid 436 
03-06 16:08:52.130: INFO/ActivityManager(69): Displayed com.android.email/.activity.MessageCompose: +1s118ms 
03-06 16:08:52.470: WARN/IInputConnectionWrapper(436): showStatusIcon on inactive InputConnection 
+0

Oczywiście, ale czy na pewno ścieżki do plików są poprawne i wskazują rzeczywiste pliki? – dymmeh

+0

ścieżki do plików są poprawne – user1252642

+1

Większość programów pocztowych nie będzie w stanie obsłużyć typów MIME "text/xml". Co więcej, większość użytkowników nie może odczytać XML. Rozważ proszę użycie prozy e-mailowej "text/plain" lub "text/html' email". – CommonsWare

Odpowiedz

1

Ten kod działa dla mnie. pdfFiles jest typu ArrayList<Uri>.

  Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); 
      shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getText(R.string.share_subject)); 
      CharSequence seq = Html.fromHtml(mOCRText.toString()); 
      shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, seq); 
      shareIntent.setType("application/pdf"); 

      shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, pdfFiles); 
      startActivity(Intent.createChooser(shareIntent, getText(R.string.share_chooser_title))); 
Powiązane problemy