Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从android应用程序发送电子邮件时出现NetworkOnMainThread异常_Java_Android - Fatal编程技术网

Java 从android应用程序发送电子邮件时出现NetworkOnMainThread异常

Java 从android应用程序发送电子邮件时出现NetworkOnMainThread异常,java,android,Java,Android,我最近在这里发现了一个问题,它帮助我建立了一个自动电子邮件客户端,应用程序将在没有任何用户干预的情况下发送电子邮件,以传递忘记的密码,但我遇到了NetworkOnMainThread异常问题。这是引发异常的方法: public boolean send() throws Exception { Properties props = _setProperties(); if(!_user.equals("") && !_pass.equals("") &&

我最近在这里发现了一个问题,它帮助我建立了一个自动电子邮件客户端,应用程序将在没有任何用户干预的情况下发送电子邮件,以传递忘记的密码,但我遇到了NetworkOnMainThread异常问题。这是引发异常的方法:

public boolean send() throws Exception {
    Properties props = _setProperties();

    if(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) {
        Session session = Session.getInstance(props, this);
        Log.d("1", "");

        MimeMessage msg = new MimeMessage(session);
        Log.d("2", "");

        msg.setFrom(new InternetAddress(_from));
        Log.d("3", "");

        InternetAddress[] addressTo = new InternetAddress[_to.length];
        Log.d("4", "");
        for (int i = 0; i < _to.length; i++) {
            addressTo[i] = new InternetAddress(_to[i]);
            Log.d("5", "");
        }
        msg.setRecipients(MimeMessage.RecipientType.TO, addressTo);
        Log.d("6", "");

        msg.setSubject(_subject);
        Log.d("7", "");
        msg.setSentDate(new Date());
        Log.d("8", "");

        // setup message body
        BodyPart messageBodyPart = new MimeBodyPart();
        Log.d("9", "");
        messageBodyPart.setText(_body);
        Log.d("10", "");
        _multipart.addBodyPart(messageBodyPart);
        Log.d("11", "");

        // Put parts in message
        msg.setContent(_multipart);
        Log.d("12", "");


        // send email
        Transport.send(msg);
        Log.d("13", "");

        return true;
    } else {
        return false;
    }
}
public boolean send()引发异常{
Properties props=_setProperties();
如果(!\u user.equals(“”&)&!\u pass.equals(“”&)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&{
Session Session=Session.getInstance(props,this);
Log.d(“1”和“);
MimeMessage msg=新MimeMessage(会话);
Log.d(“2”和“);
msg.setFrom(新的Internet地址(_-from));
Log.d(“3”和“);
InternetAddress[]addressTo=新的InternetAddress[_to.length];
Log.d(“4”和“);
对于(int i=0;i<\u to.length;i++){
addressTo[i]=新的Internet地址(_to[i]);
对数d(“5”和“);
}
msg.setRecipients(mimessage.RecipientType.TO,addressTo);
对数d(“6”和“);
msg.setSubject(_subject);
Log.d(“7”和“);
msg.setSentDate(新日期());
Log.d(“8”和“);
//设置消息正文
BodyPart messageBodyPart=新的MimeBodyPart();
Log.d(“9”和“);
messageBodyPart.setText(_body);
对数d(“10”和“);
_multipart.addBodyPart(messageBodyPart);
Log.d(“11”和“);
//将部件放入消息中
msg.setContent(_多部分);
对数d(“12”和“);
//发送电子邮件
发送(msg);
对数d(“13”和“);
返回true;
}否则{
返回false;
}
}

问题似乎发生在“Transport.send(msg);”行,因为当我运行应用程序时,它从未记录13

正如错误中所说,您不能在主线程上联网。这会导致UI无响应并阻塞所有资源,直到网络任务完成。因此,您需要做的是将网络位移动到
异步任务中


有关更多详细信息,请参阅:

call send method from asyncktaskpost调用send()方法的代码感谢@BirajZalavadia发挥了作用