2012-03-16 2 views
0

에 이메일을 보낼 수 없습니다 나는 안드로이드 3.2을 통해 이메일을 보내이 link을 시도,하지만 난이 오류가 발생했습니다 :안드로이드 3.2

01-11 13:48:59.818: E/MailApp(29958): Could not send email 
01-11 13:48:59.818: E/MailApp(29958): android.os.NetworkOnMainThreadException 
01-11 13:48:59.818: E/MailApp(29958): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084) 
01-11 13:48:59.818: E/MailApp(29958): at java.net.InetAddress.lookupHostByName(InetAddress.java:391) 
01-11 13:48:59.818: E/MailApp(29958): at java.net.InetAddress.getLocalHost(InetAddress.java:371) 
01-11 13:48:59.818: E/MailApp(29958): at javax.mail.internet.InternetAddress.getLocalAddress(InternetAddress.java:517) 
01-11 13:48:59.818: E/MailApp(29958): at javax.mail.internet.UniqueValue.getUniqueMessageIDValue(UniqueValue.java:99) 
01-11 13:48:59.818: E/MailApp(29958): at javax.mail.internet.MimeMessage.updateMessageID(MimeMessage.java:2054) 
01-11 13:48:59.818: E/MailApp(29958): at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2076) 
01-11 13:48:59.818: E/MailApp(29958): at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2042) 
01-11 13:48:59.818: E/MailApp(29958): at javax.mail.Transport.send(Transport.java:117) 
01-11 13:48:59.818: E/MailApp(29958): at com.fahadalawam.kwtresturant.Mail.send(Mail.java:125) 
01-11 13:48:59.818: E/MailApp(29958): at com.fahadalawam.kwtresturant.Add$1.onClick(Add.java:58) 
01-11 13:48:59.818: E/MailApp(29958): at android.view.View.performClick(View.java:3480) 
01-11 13:48:59.818: E/MailApp(29958): at android.view.View$PerformClick.run(View.java:13983) 
01-11 13:48:59.818: E/MailApp(29958): at android.os.Handler.handleCallback(Handler.java:605) 
01-11 13:48:59.818: E/MailApp(29958): at android.os.Handler.dispatchMessage(Handler.java:92) 
01-11 13:48:59.818: E/MailApp(29958): at android.os.Looper.loop(Looper.java:137) 
01-11 13:48:59.818: E/MailApp(29958): at android.app.ActivityThread.main(ActivityThread.java:4340) 
01-11 13:48:59.818: E/MailApp(29958): at java.lang.reflect.Method.invokeNative(Native Method) 
01-11 13:48:59.818: E/MailApp(29958): at java.lang.reflect.Method.invoke(Method.java:511) 
01-11 13:48:59.818: E/MailApp(29958): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-11 13:48:59.818: E/MailApp(29958): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-11 13:48:59.818: E/MailApp(29958): at dalvik.system.NativeStart.main(Native Method) 

답변

1
android.os.NetworkOnMainThreadException 

바로 거기에 답이있다. 기본 UI 스레드에서 네트워크에 액세스하려고합니다. 이것은 나쁘다! 그것을 피하는 방법에 대한 지침은 this article을 참조하십시오.

클릭 한 처리기에서 send() 메서드를 호출하여 잘못된 예제를 설정했습니다. 해당 페이지의 작성자에게 문제를 지적하고 싶을 수 있습니다.

+0

고맙습니다. AsyncTask로 문제를 해결했습니다. –

1

메인 스레드에서 네트워크 관련 작업을하려고합니다 !! 안드로이드 3.0 이후는 행동과 응답 성이 향상된 응용 프로그램을 만들기위한 단계로 사용되지 않습니다 (이전 버전에서는 방금 경고했습니다).

android.os.NetworkOnMainThreadException 

그래서, 당신은 메인 스레드 떨어져 이메일 전송 부분을 밀어하셔야합니다 스택 트레이스에이 줄을 참조하십시오. 다음 예제에서는 AsyncTask가 필요하지 않지만 간단한 스레드가 수행합니다.

Runnable r = new Runnable() { 

     @Override 
     public void run() { 
       // send email 
        Transport.send(msg); 

     } 
    }; 
     Thread t = new Thread(r); 
     t.start();