2014-09-04 1 views
-1

onPostExecute에 의도 또는 토스트 메시지를 표시하는 방법 또는 사용자에게 ...! 이메일을 보낸 경우. 메시지 (전자 메일 전송 됨)가있는 새 창으로 사용자가 표시됩니다. 메일을 보낸 경우 비동기 작업 후 인 텐트 시작

private void sendMail(String email, String subject, String messageBody) { 
    Session session = createSessionObject(); 
    try { 
     Message message = createMessage(email, subject, messageBody, session); 
     new SendMailTask().execute(message); 
    } catch (AddressException e) { 
     e.printStackTrace(); 
    } catch (MessagingException e) { 
     e.printStackTrace(); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 
} 
private Message createMessage(String email, String subject, String messageBody, Session session) throws MessagingException, UnsupportedEncodingException { 
    Message message = new MimeMessage(session); 
    message.setFrom(new InternetAddress("[email protected]", "report for APP")); 
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(email, email)); 
    message.setSubject(subject); 
    message.setText(messageBody); 

    return message; 
} 
private Session createSessionObject() { 
    Properties properties = new Properties(); 
    properties.put("mail.smtp.auth", "true"); 
    properties.put("mail.smtp.starttls.enable", "true"); 
    properties.put("mail.smtp.host", "smtp.gmail.com"); 
    properties.put("mail.smtp.port", "587"); 
    return Session.getInstance(properties, new javax.mail.Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(username, password); 
     } 
    }); 
} 
private class SendMailTask extends AsyncTask<Message, Void, Void> { 
    private ProgressDialog progressDialog; 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     progressDialog = ProgressDialog.show(AboutPage.this, "Please wait", "Sending mail", true, false); 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     progressDialog.dismiss(); 

    } 
    @Override 
    protected Void doInBackground(Message... messages) { 
     try { 
      Transport.send(messages[0]); 
     } catch (MessagingException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

답변

0

IRT는

가 이

SendMailTask(Context context){ 

} 

하여 AsyncTask를의 CALSS의

Oveload 생성자는 클래스에 개인 상황에 맞는 멤버를 , failry 쉬운 것입니다 내 클래스 의견 양식입니다

private class SendMailTask extends AsyncTask<Message, Void, Void> { 
    private Context context; 

실행 후 즉시 실행하십시오.

@Override 
protected void onPostExecute(Void aVoid) { 
    super.onPostExecute(aVoid); 
    progressDialog.dismiss(); 
    Toast.makeText(context,"My Message",Toast.LENGTH_SHORT).show(); 

} 

그리고이 방법 서명을 잊어 버리면 안됩니다. 이 충분합니다

private void sendMail(Context context,String email, String subject, String messageBody) 

희망 ..

관련 문제