1

我正在尝试使用 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()) 回显到我的 PC。似乎没有任何东西可以注册传入的消息。这似乎是我在网上找到的每个方法的格式。

4

1 回答 1

0

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

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

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

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

于 2012-01-23T21:08:03.523 回答