2013-01-17 39 views
6

Gần đây tôi đã hỏi một câu hỏi liên quan đến đoạn mã sau:Sử dụng AsyncTask Gửi Email Android

Sending Email in Android using JavaMail API without using the default/built-in app

tôi đã yêu cầu này liên quan đến một lỗi mạng, theo một câu hỏi trước:

Need Help Debugging Email Code

Câu hỏi của tôi là, làm cách nào để triển khai AsyncTask để gửi thành công email với mã Android này? Mỗi hướng dẫn mà tôi nhìn thấy thông báo với tôi rằng tôi nên làm

extend AsyncTask { 

Tuy nhiên, GMailSender.java đã có này định nghĩa là:

public class GMailSender extends javax.mail.Authenticator 

Nếu có ai có thể giúp tôi? Cảm ơn!

LƯU Ý:

Xin đừng như thằng ngốc người có -1 ed câu hỏi này và gửi câu trả lời chính xác như đã được trình bày trong Sending Email in Android using JavaMail API without using the default/built-in app. Tôi không thể sử dụng mã hóa chính xác đó, do thực tế là không còn có thể chạy một hoạt động mạng trên luồng chính của một ứng dụng Android. Tôi đang tìm một cách để sử dụng AsyncTask để chạy các hoạt động trong nền. Những gì tôi không thể tìm ra là làm thế nào để làm

extend AsyncTask { 

mà không cần chạm

public class GMailSender extends javax.mail.Authenticator 

Trả lời

8

Có một ví dụ khá tốt ngay trên AsyncTask doc page.

Chuyển đối tượng GMailSender của bạn vào số AsyncTask và gọi GMailSender#sendMail trong thời gian doInBackground.

Đó là,

public void onClick(View v) { 
    final GMailSender sender = new GMailSender("[email protected]", "password"); 
    new AsyncTask<Void, Void, Void>() { 
     @Override public Void doInBackground(Void... arg) { 
      try { 
       sender.sendMail("This is Subject", 
        "This is Body", 
        "[email protected]", 
        "[email protected]"); 
      } catch (Exception e) { 
       Log.e("SendMail", e.getMessage(), e); 
      } 
     } 
    }.execute(); 

} 
+0

'doInBackground (Void ... arg) 'mang lại cho tôi một lỗi của' Phương pháp này phải trả về một kết quả của loại Void ' –

+0

Ngoài ra, tôi không thể làm' return null; ', bởi vì điều đó sẽ chỉ cung cấp cho tôi một bản ghi' null' khác. –

+0

Thực ra, tôi lấy lại. Tôi chỉnh sửa mã một chút, và bây giờ có nó làm việc. Cảm ơn rất nhiều! Chúc mừng! –

1
public void onClick(View v) { 
final GMailSender sender = new GMailSender("[email protected]",  "password"); 
new AsyncTask<Void, Void, Void>() { 
    @Override public Void doInBackground(Void... arg) { 
     try { 
      sender.sendMail("This is Subject", 
       "This is Body", 
       "[email protected]", 
       "[email protected]"); 
     } catch (Exception e) { 
      Log.e("SendMail", e.getMessage(), e); 
     } 
    return null;} 
}.execute(); 

} 

Cảm ơn bạn "dokkaebi"

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