2011-03-16 48 views
6

tôi đang cố gắng gửi e-mail có nhiều tệp đính kèm.gửi e-mail có nhiều tệp đính kèm

Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE); 
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]", "[email protected]"}); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "The Subject"); 
emailIntent.putExtra(Intent.EXTRA_TEXT, "The Text"); 
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 
emailIntent.setType("text/plain"); 
startActivity(Intent.createChooser(emailIntent, "Send Email Using: ")); 

Điều này rất tuyệt khi tôi gửi email bằng gmail nhưng không đính kèm nếu tôi gửi e-mail bằng ứng dụng email trên Nexus One. Nó có tất cả văn bản, chủ đề, v.v ... nhưng không có phần đính kèm. Tài khoản email tôi có là tài khoản trao đổi nếu có vấn đề ...

Trả lời

12

Hãy thử Điều này hoạt động tốt.

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); 
emailIntent.setType("plain/text"); 

ArrayList<Uri> uris = new ArrayList<Uri>(); 

String[] filePaths = new String[] {image1 Path,image2 path}; 
for (String file : filePaths) { 
    File fileIn = new File(file); 
    Uri u = Uri.fromFile(fileIn); 
    uris.add(u); 
} 

if (!(app_preferences.getString("email", "") == null || app_preferences.getString("email", "").equals(""))) { 
    emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {app_preferences.getString("email", "")});  
} 

emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject name"); 
emailIntent.putExtra(Intent.EXTRA_TEXT, "Please find the attachment."); 
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 

startActivity(Intent.createChooser(emailIntent, "Email:")); 
+6

+2 android.content.Intent.ACTION_SEND_MULTIPLE hoạt động tốt ... thanx –

+0

hoạt động .. cảm ơn –

+1

Nếu bạn không chuyển một Chuỗi mới [] {} đến Intent.EXTRA_EMAIL nó sẽ chỉ rời khỏi người nhận lĩnh vực trống ... –

0

Cố gắng tất cả điều này một triệu lần - đã làm việc nhưng có một cảnh báo khó chịu. Phát hiện ra đó là một lỗi Android. Có một sửa chữa & thông tin khác tại đây:

https://code.google.com/p/android/issues/detail?id=38303 

Error: ClassCastException warning in log when opening e-mail app with a body and multiple file attachments. 

Cập nhật: tìm thấy cách giải quyết. Thay vì

sendIntent.putExtra(Intent.EXTRA_TEXT, "See attached CSV files."); 

Đặt văn bản như một ArrayList

ArrayList<String> extra_text = new ArrayList<String>(); 
extra_text.add("See attached CSV files."); 
sendIntent.putStringArrayListExtra(Intent.EXTRA_TEXT, extra_text); 

Voila! Không còn ngoại lệ và EXTRA_TEXT kết thúc bằng nội dung email.

EDIT: Tôi nghĩ rằng chỉ cần nhận xét ra dòng này sẽ loại bỏ lỗi - nhưng sau đó bạn không nhận được để nhập bất kỳ thông tin cho một cơ thể. Trong trường hợp của tôi đó là tốt mặc dù kể từ khi tôi chỉ gửi email các tập tin đăng nhập. Xóa dòng này để loại bỏ cảnh báo: 'sendIntent.putExtra (Intent.EXTRA_TEXT, "Xem tệp CSV đính kèm.");'

+0

nếu emailIntent.setType ("text/html"), giải pháp của bạn không hoạt động đối với nội dung HTML. – Nizzy

Các vấn đề liên quan