【发布时间】:2014-02-21 07:47:23
【问题描述】:
正如asmack documentation 中所见,当您在 processMessage() 方法中从 Chat 的 MessageListener 收到一条 Chat 类型消息时,我应该使用 Chat.sendMessage() 发回这条消息以通知消息接收。
但在我的聊天实现中,我在打开一对一聊天时不使用 ChatManager,我有一个服务和侦听器来做这些事情。
在服务中,我有一个 PacketListener 要接收,我正在尝试正确地发送回消息,正如我在 asmack documentation 中看到的那样,但它不起作用。
this.xmppChat.addPacketListener(new PacketListener() {
@Override
public synchronized void processPacket(Packet packet) {
Message message = (Message) packet;
if (message.getType() == Message.Type.chat) {
Log.i("XMPP_SERVICE",
String.format("Mensaje recibido de %s",
message.getFrom()));
// Rest of code implementation...
// At the end try to send back message to notify reception.
XMPPService.this.xmppChat.sendMessage(new Message(message.getBody()));
}
}
}, new PacketTypeFilter(Message.class));
XMPPService.this.xmppChat.sendMessage(Message message) 方法:
public boolean sendMessage(Message message) {
Log.i("XMPP_INFO", "Enviando el mensaje");
try {
this.xmppManager.getConnection().sendPacket(message);
Log.i("XMPP_INFO", "Enviado el mensaje");
return true;
} catch (Exception ex) {
Log.e("XMPP_ERROR", ex.getMessage());
return false;
}
}
我做错了什么?我该如何解决?
最好的问候,并在此先感谢您。
【问题讨论】:
-
什么不起作用?一些细节会有所帮助。