永远不会调用aSmack MessageListener的processMessage

时间:2012-01-20 01:02:00

标签: android eclipse xmpp smack asmack

我正在尝试使用aSmack在Android手机之间设置XMPP通信的基础知识。我已经设法从我的应用程序注册一个帐户,并将消息发送到我登录到我的PC上的Jabber-ID。问题是我的PC客户端的回复似乎没有收到,我的MessageListener中的processMessage()似乎没有被调用。

       try{connection.login("kmomochesstest", "password1");}
       catch(Exception e){Log.e("connection","Account login error: " + e.toString());}
       chat = connection.getChatManager().createChat("chesstestpc@macjabber.de", new MessageListener() {

             public void processMessage(Chat chat, Message message) {
                 try{System.out.println(message.getBody());}
             catch(Exception e){Log.e("connection","Message send error: " + e.toString());}
       });
       try{chat.sendMessage("Test Message from Activity");Log.d("connection","Just sent Message ");}
        catch(Exception e){Log.e("connection","Message send error: " + e.toString());}

此时我正在尝试打印到控制台,但我已经尝试打印到日志,然后用chat.sendMessage(message.getBody())回显我的电脑。似乎没有注册传入的消息。这似乎是我在网上找到的每一个操作方式的格式。

1 个答案:

答案 0 :(得分:0)

您使用的是什么版本的Smack?

在尝试将不包含线程ID的消息与使用其中一个创建的现有聊天(如Smack一样)匹配时,早期版本中存在问题。例如,Pidgin不使用线程ID,这会在收到消息时创建一个新的聊天实例。

3.2中的匹配过程得到了改进,以防止这种情况发生。

尝试创建一个ChatManagerListener,看看你是否从你的回复中创建了新的聊天。