0

Android アプリからバックグラウンドでメールを送信しようとしています。メールは添付ファイル付きで正常に送信されましたが、その後もログにエラーが表示されます。ログを参照して、エラーの場所と解決方法を教えてください。

03-14 13:37:37.697: E/MailApp(1296): Could not send email
03-14 13:37:37.697: E/MailApp(1296): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
03-14 13:37:37.697: E/MailApp(1296):    at android.os.Handler.<init>(Handler.java:197)
03-14 13:37:37.697: E/MailApp(1296):    at android.os.Handler.<init>(Handler.java:111)
03-14 13:37:37.697: E/MailApp(1296):    at android.widget.Toast$TN.<init>(Toast.java:324)
03-14 13:37:37.697: E/MailApp(1296):    at android.widget.Toast.<init>(Toast.java:91)
03-14 13:37:37.697: E/MailApp(1296):    at  android.widget.Toast.makeText(Toast.java:238)
03-14 13:37:37.697: E/MailApp(1296):    at com.example.mytest.ReadContactsActivity.SendMail(ReadContactsActivity.java:173)
03-14 13:37:37.697: E/MailApp(1296):    at com.example.mytest.ReadContactsActivity.access$0(ReadContactsActivity.java:156)
03-14 13:37:37.697: E/MailApp(1296):    at com.example.mytest.ReadContactsActivity$CountDownTask.doInBackground(ReadContactsActivity.java:131)
03-14 13:37:37.697: E/MailApp(1296):    at com.example.mytest.ReadContactsActivity$CountDownTask.doInBackground(ReadContactsActivity.java:1)
03-14 13:37:37.697: E/MailApp(1296):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
03-14 13:37:37.697: E/MailApp(1296):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
03-14 13:37:37.697: E/MailApp(1296):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
03-14 13:37:37.697: E/MailApp(1296):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
03-14 13:37:37.697: E/MailApp(1296):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
4

2 に答える 2

1

メソッドToast内にメッセージを表示しようとしていると思います。メソッド内で実行してください....AsynTask doInBackground()onPostExecute()

于 2013-03-15T05:26:35.910 に答える
0

メインスレッドに直接変更を加えようとしているバックグラウンドスレッドを使用している可能性があります。それが問題である場合は、使用してください

runOnUiThread(new Runnable() {
  public void run() {
    //do your work here
  }
});
于 2013-03-15T05:21:52.323 に答える