为什么我的Android应用程序会在尝试连接套接字时阻止?

时间:2013-01-23 05:24:38

标签: java android email imap block

我有一个非常简单的代码,试图在Android上使用JavaMail打开套接字,如下所示:

public boolean connect() {
    try {
        store_ = session_.getStore("imap");
        store_.connect(email_.host, email_.user, email_.pass);
        folder_ = store_.getDefaultFolder();
        folder_ = folder_.getFolder("inbox");
        folder_.open(Folder.READ_ONLY);
    }
    catch(Exception e) {
        disconnect();
        return false;
    }

    return true;
}

public void disconnect() {
    if (folder_ != null) {
        try {
            folder_.close(false);
        }
        catch(Exception e) {
        }
        folder_ = null;
    }

    if (store_ != null) {
        try {
            store_.close();
        }
        catch(Exception e) {
        }
        store_ = null;
    }
}

适用于不需要SSL的IMAP服务器。其他,这个应用程序只是阻止。 无论尝试/捕获。任何的想法? 请注意,一旦我提到“imaps”而不是“imap”,我就会工作,但我不希望我的应用程序在任何情况下阻止。

2 个答案:

答案 0 :(得分:0)

这是在UI线程上完成的吗?你应该把它卸载到像ASyncTask或服务这样的东西,如果它是因为connect()(socket.connect())方法将阻止。

答案 1 :(得分:0)

我建议您先阅读此内容,然后检查您是否正在使用主UI线程或后台线程上的套接字连接。可以在此链接上找到示例:here