2010-12-29 1 views
0

Я искал вокруг совсем немного, чтобы попытаться найти дополнительную информацию о Smack и их ChatManager, но их не так много, поэтому пришло время прийти в SOF.Smack ChatManager не работает должным образом

я делаю что-то очень простой в определенный момент в моем коде:

chatmanager = con.getChatManager(); 
chatmanager.createChat(name, message.getThread(), 
new MessageListener() { 
    public void processMessage(Chat chat, Message message) { 
    } 
}); 
System.out.println("Chat created"); 
Chat chat = chatmanager.getThreadChat(message.getThread()); 
if (chat == null) 
    System.out.print("Newly created chat is null"); 
else 
    System.out.println("Newly created chat is saved in manager"); 

Я пытаюсь проверить, что чат я просто создан, на самом деле в chatManager

В моей программе у меня есть только 1 экземпляр chatManager когда-либо созданных, но несколько раз я делаю это:

chatmanager = con.getChatManager(); 

у меня есть ощущение, что EAC h time Я делаю это, chatManager повторно инициализируется. Я полностью ошибаюсь?

В любом случае проблема заключается в том, что я не получаю никакого вывода. Ни «chat is null», ни «chat» не сохраняется. Приводит меня к мысли, что chatManager вызывает проблемы.

Может ли кто-нибудь помочь?

+0

бы вы возражаете разместим ваш менеджер чата, IM также некоторые трудности, мои чаты появляются идти в одну сторону –

ответ

0

ChatManager всегда должен быть связан непосредственно с соединением. Вот оригинальный источник для класса подключения:

http://fisheye.igniterealtime.org/browse/smack/trunk/source/org/jivesoftware/smack/Connection.java?r=11613

Вы можете видеть, что хранит ссылку на менеджер чата:

public synchronized ChatManager getChatManager() { 
    if (this.chatManager == null) { 
     this.chatManager = new ChatManager(this); 
    } 
    return this.chatManager; 
} 

вы видите «чат создан» в журнале? Я не знаком с приложением Google ChatManager или Smack, но ChatManager хранит простую карту идентификатора потока для объекта чата

+0

«Чат создан» не появится в журнале, но кажется, что объект Chat имеет значение null при проверке чата. Я закончил создание своего собственного менеджера чата, который отслеживает все чаты с моим собственным UUID, и он работает намного лучше. – Adam

0

Уверены ли вы, что проблема в чате? Убедитесь, что соединение подключено, прежде чем пытаться создать один чат.

Чтобы сделать это, вы можете, например, получить список контактов:

 try { 
     connection.connect(); 
     connection.login(user, password); 
     System.out.println("Secured:" + connection.isSecureConnection()); 
     for (RosterGroup group : connection.getRoster().getGroups()) { 
      System.out.println(group.getName()); 
      for (RosterEntry entry : group.getEntries()) { 
       System.out.println("\t" + entry.getName() + "\t" + entry.getUser()); 
      } 
     } 
    } catch (XMPPException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }