ChatManager chatmanager = ChatManager.getInstanceFor(xmppManager.getConnection());
chat = chatmanager.createChat(otherJabberId);
chat.addMessageListener(new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
Log.e("message trigger", message.getBody());
}
}
但是我的日志从未触发。
我在代码中使用了setDebuggerEnabled(true)
,并且出现了以下内容:10-31 15:41:51.264 28889-28993/com.lfdversluis.buurapp D/SMACK: RECV (0): <message to="test@app.buur.nu/Smack" type="chat" id="53" from="testje@app.buur.nu/Gajim"><body>test</body><request xmlns="urn:xmpp:receipts"/><thread>277945c1-772a-4d4b-8e1a-274153cfb8a6</thread></message>
因此,消息已经被接收。我已经检查过otherJabberId
变量,它是正确的。问题在于监听器不能触发。更奇怪的是,有时它可以正常工作。
我还有另一个问题,就是无法发送消息。
在这里,我像上面一样设置聊天,并使用以下代码发送消息:
try {
chat.sendMessage(text.trim());
DataBaseManager db = new DataBaseManager(ChatActivity.this);
db.addMessageToDB(model);
addMessageToScreen(newMessage);
} catch (SmackException.NotConnectedException ignored) {
XMPPManager manager = XMPPManager.getInstance();
manager.reconnect(); // Maybe we need to reconnect due to an interrupt and retry..
try {
chat.sendMessage(text.trim());
DataBaseManager db = new DataBaseManager(ChatActivity.this);
db.addMessageToDB(model);
addMessageToScreen(newMessage);
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
Toasteroid.show(ChatActivity.this, "Could not send message. Please try again.", Toasteroid.STYLES.ERROR);
}
}
现在经常会弹出“无法发送消息”的提示,所以显然我没有连接,也无法重新连接?
那么我该如何使我的连接更加稳定,并确保我的消息能够被发送?
addMessageListener()
需要一个ChatMessageListener
。 - Gooey