0

誰かがデバッグを手伝ってくれるかどうか疑問に思いました。私は現在、次のコードを使用しています:

デフォルト/組み込みアプリを使用せずにJavaMailAPIを使用してAndroidでメールを送信する

指示どおりにすべてのコードを使用しました。メールフィールドを入力した後、メールを送信できませんでした。GMailSender.javaにコードがあり、コードが欠落しているように見えました。

}catch(Exception e){

}

コードの他のすべての部分をデバッグしたことを知って、Log.eを追加しました。

}catch(Exception e){
    Log.e("GmailDebug", e.getMessage(), e); 
}

その結果、以下のログを取得していることに気づきました。

01-16 22:22:38.933: E/GmailDebug(4487): null
01-16 22:22:38.933: E/GmailDebug(4487): android.os.NetworkOnMainThreadException

事前に行をコメントアウトし、体系的にコメントを解除した後、最終的に、行のコメントを解除するまでログが取得されなかったと判断できました。

Transport.send(message);

誰かが私を助けて、これらのエラーを防ぐ方法を教えてもらえますか?ありがとう!

4

1 に答える 1

1

これは、メインスレッドでネットワーク操作を行っているために発生します。これは、Android3.0以降では許可されていません。サービス内であっても、別のスレッドで特に起動したり、その中にスレッドを作成したりしない限り、サービスはUIスレッドで実行されます。

これを修正するには、スレッドまたはAsyncTaskを使用して、メインUIスレッドからバックグラウンドスレッドでタスクを実行します。

于 2013-01-17T06:46:05.317 に答える