在android 4.1及更多版本中发送电子邮件
我正在使用前一个堆栈溢出答案中的代码 它在安卓2.2、2.3中运行良好 但它在4.1及以上版本上不起作用-有人能帮我解决吗 错误报告在android 4.1及更多版本中发送电子邮件,android,email,send,Android,Email,Send,我正在使用前一个堆栈溢出答案中的代码 它在安卓2.2、2.3中运行良好 但它在4.1及以上版本上不起作用-有人能帮我解决吗 错误报告 08-19 16:18:23.722: E/SEND(17510): ERROR 08-19 16:18:23.722: E/SEND(17510): android.os.NetworkOnMainThreadException 08-19 16:18:23.722: E/SEND(17510): at android.os.StrictMode$Androi
08-19 16:18:23.722: E/SEND(17510): ERROR
08-19 16:18:23.722: E/SEND(17510): android.os.NetworkOnMainThreadException
08-19 16:18:23.722: E/SEND(17510): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
08-19 16:18:23.722: E/SEND(17510): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
08-19 16:18:23.722: E/SEND(17510): at java.net.InetAddress.getLocalHost(InetAddress.java:365)
08-19 16:18:23.722: E/SEND(17510): at javax.mail.internet.InternetAddress.getLocalAddress(InternetAddress.java:517)
08-19 16:18:23.722: E/SEND(17510): at javax.mail.internet.UniqueValue.getUniqueMessageIDValue(UniqueValue.java:99)
08-19 16:18:23.722: E/SEND(17510): at javax.mail.internet.MimeMessage.updateMessageID(MimeMessage.java:2054)
08-19 16:18:23.722: E/SEND(17510): at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2076)
08-19 16:18:23.722: E/SEND(17510): at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2042)
08-19 16:18:23.722: E/SEND(17510): at javax.mail.Transport.send(Transport.java:117)
08-19 16:18:23.722: E/SEND(17510): at hai.bt.expensemanager.Mail.send(Mail.java:77)
08-19 16:18:23.722: E/SEND(17510): at hai.bt.expensemanager.ForgotPasswordActivity$2.onClick(ForgotPasswordActivity.java:79)
08-19 16:18:23.722: E/SEND(17510): at android.view.View.performClick(View.java:4084)
08-19 16:18:23.722: E/SEND(17510): at android.view.View$PerformClick.run(View.java:16966)
08-19 16:18:23.722: E/SEND(17510): at android.os.Handler.handleCallback(Handler.java:615)
08-19 16:18:23.722: E/SEND(17510): at android.os.Handler.dispatchMessage(Handler.java:92)
08-19 16:18:23.722: E/SEND(17510): at android.os.Looper.loop(Looper.java:137)
08-19 16:18:23.722: E/SEND(17510): at android.app.ActivityThread.main(ActivityThread.java:4874)
08-19 16:18:23.722: E/SEND(17510): at java.lang.reflect.Method.invokeNative(Native Method)
08-19 16:18:23.722: E/SEND(17510): at java.lang.reflect.Method.invoke(Method.java:511)
08-19 16:18:23.722: E/SEND(17510): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
08-19 16:18:23.722: E/SEND(17510): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
08-19 16:18:23.722: E/SEND(17510): at dalvik.system.NativeStart.main(Native Method)
使用以下代码段:
// mail function
private void mail() {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL,
new String[] { "abc@xyz.in" });
i.putExtra(Intent.EXTRA_SUBJECT, "ENQUERY");
i.putExtra(Intent.EXTRA_TEXT, "");
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(ContactUsActivity.this,
"Email can't be sent due to device problem",
Toast.LENGTH_SHORT).show();
}
}
这对我有用
很可能是因为您没有将电子邮件作为异步任务发送,所以出现了错误。ICS及以上版本不允许在主线程中进行事务 你有例外吗?catlog会很有帮助的谢谢,但我想在后台发送电子邮件这是您在问题中没有提到的…………谢谢kittu88,我的问题通过异步任务解决。@haibtbk如果您对我的建议感到满意,请接受答案。。。。。。。。