0

SmackとそのChatManagerに関する追加情報を探すためにかなり検索しましたが、それほど多くはないので、SOFに来る時が来ました。

コードの特定の時点で、非常に基本的なことを行っています。

 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にあることを確認しようとしています

私のプログラムでは、これまでに作成したchatManagerのインスタンスは1つだけですが、これを複数回行います。

 chatmanager = con.getChatManager();

そうするたびに、chatManagerが再初期化されているような気がします。私は完全に間違っていますか?

とにかく、問題は私が何の出力も得られないということです。「チャットがnull」または「チャットが保存されました」のどちらでもありません。chatManagerが問題を引き起こしていると私に信じさせます。

誰か助けてもらえますか?

4

2 に答える 2

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はチャットオブジェクトへのスレッドIDの単純なマップを保存します

于 2011-01-05T11:08:36.057 に答える
0

問題はチャットマネージャーにありますか? 1 つのチャットを作成する前に、接続が確立されていることを確認してください。

これを行うには、たとえば、連絡先リストを取得できます。

        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();
    }
于 2012-02-02T11:52:40.090 に答える