0

我想知道是否有人可以帮助我进行调试。我目前正在使用以下代码:

在不使用默认/内置应用程序的情况下使用 JavaMail API 在 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

发生这种情况是因为您正在主线程上执行网络操作,而这在 Android 3.0 及更高版本上是不允许的。即使它在服务中,服务也会在 UI 线程上运行,除非您专门在另一个线程中启动它们或在其中创建一个线程。

您可以通过使用ThreadAsyncTask在主 UI 线程之外的后台线程中运行任务来解决此问题。

于 2013-01-17T06:46:05.317 回答