Android 三星Galaxy SIII上的JavaMail崩溃
我有以下JavaMail的实现,它在Android2.2(Froyo)模拟器上运行良好(该项目的目标是最新版本17)。当我将其加载到Galaxy SIII手机(安装了Android 4.1.1)上时,应用程序在LogCat指示的“catch”上崩溃;甚至连鱼钩里的烤面包都没有展示出来。有什么提示吗? 代码如下:Android 三星Galaxy SIII上的JavaMail崩溃,android,crash,jakarta-mail,Android,Crash,Jakarta Mail,我有以下JavaMail的实现,它在Android2.2(Froyo)模拟器上运行良好(该项目的目标是最新版本17)。当我将其加载到Galaxy SIII手机(安装了Android 4.1.1)上时,应用程序在LogCat指示的“catch”上崩溃;甚至连鱼钩里的烤面包都没有展示出来。有什么提示吗? 代码如下: /** * Send an Email with a file in attach (the file is located in SDCARD/mailattach/ dir
/**
* Send an Email with a file in attach (the file is located in SDCARD/mailattach/ directory)
* @param emailAddress
* @param emailObject
* @param emailBody
* @param attachedFile name
*/
public static void sendEmail(String emailAddress, String emailSubject, String emailBody, String attachedFile) {
Email m = new Email(email_config.get("ACCOUNT_NAME"), email_config.get("ACCOUNT_PASSWORD"));
String[] toArr = { emailAddress };
// Email server static initializations
m.setHost(email_config.get("DEFAULT_SMTP_SERVER"));
m.setPort(email_config.get("DEFAULT_SMTP_PORT"));
if (email_config.get("SMTP_AUTHENTICATION") == "true") {
m.setSauth(true);
} else {
m.setSauth(false);
}
m.setSport(email_config.get("SOCKET_FACTORY_PORT"));
if (email_config.get("DEBUG_MODE") == "true") {
m.setDebug(true);
} else {
m.setDebug(false);
}
// Email transmitted parameters
m.setTo(toArr);
m.setFrom(email_config.get("ACCOUNT_NAME"));
m.setSubject(emailSubject);
m.setBody(emailBody);
String attachPath = Environment.getExternalStorageDirectory().getAbsolutePath() +
File.separator + "mailattach" + File.separator + attachedFile;
try {
// set the attachment and send
m.addAttachment(attachPath);
if(m.send()) {
Toast.makeText(context, "Email was sent successfully.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, "Email was not sent.", Toast.LENGTH_LONG).show();
}
} catch(Exception e) {
Toast.makeText(context, "Error sending the email: "+e.toString(), Toast.LENGTH_LONG).show();
}
}
确保在非主线程中调用网络,因为Android 4不允许这样做。添加e.printStackTrace()并发布输出。似乎信息是null@matheszabi:做了(把它而不是烤面包放在钩子里)。结果是应用程序不会崩溃,只有在不发送电子邮件的情况下才能正常工作。我没有在“尝试”里面得到任何祝酒词。在Eclipse控制台上没有打印任何消息(如果它没有崩溃,就意味着它没有通过“catch”)我想我知道:NetworkOnMainThreadException。似乎当目标高于版本9时,我需要在AsyncTask中执行网络操作…这将是解决方案!