2012-03-16 12 views
0

に電子メールを送信することはできません私は、Android 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

メインスレッドでネットワーク関連の操作をしようとしています! Android 3.0以降では、より適切な応答性の高いアプリケーションを作成するためのステップとしてはこれが許可されていません(古いバージョンでは警告が出されたばかりです)。 stackTraceのこの行を参照してください

android.os.NetworkOnMainThreadException 

したがって、電子メール送信部分をメインスレッドからプッシュする必要があります。あなたが従っている例では、AsyncTaskの必要はありません。単純なスレッドが行います。

Runnable r = new Runnable() { 

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

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