0

我有一个非常简单的代码,它试图在 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 服务器。否则,该应用程序只会阻塞。无论尝试/捕捉。任何想法?请注意,一旦我提到“imap”而不是“imap”,这当然可以工作,但我不希望我的应用程序在任何情况下都会阻塞。

4

2 回答 2

0

这是在 UI 线程上完成的吗?如果是因为 connect() (socket.connect()) 方法会阻塞,您应该将其卸载到 ASyncTask 或服务之类的东西上。

于 2013-01-23T05:53:14.423 回答
0

我建议你先阅读这篇文章,然后检查你是在主 UI 线程还是后台线程上处理套接字连接。可以在此链接上找到示例:here

于 2013-01-23T05:57:37.847 回答