2014-05-12 30 views
3

我試圖用Java創建一個多用戶聊天。我正在使用smack庫。 這是我的代碼來創建multiuserchat:Smack - 如何閱讀MultiUserChat的配置?

MultiUserChat muc = new MultiUserChat(connection, "[email protected]"); 
muc.create("mynickname"); 

Form form = muc.getConfigurationForm(); 
Form submitForm = form.createAnswerForm(); 
submitForm.setAnswer("muc#roomconfig_roomname", "A nice formatted Room Name"); 
submitForm.setAnswer("muc#roomconfig_roomdesc", "The description. It should be longer."); 
muc.sendConfigurationForm(submitForm); 
muc.addMessageListener(mucMessageListener); // mucMessageListener is a PacketListener 

然後,我試圖捕捉通過這個房間mucMessageListener以上使用創建的發送的消息:(

private PacketListener mucMessageListener = new PacketListener() { 
    public void processPacket(Packet packet) { 
     if (packet instanceof Message) { 
      Message message = (Message) packet; 
      // this is where I got the problem 
     } 
    } 
} 

正如其他部分所接收的消息的用戶誰是不是這個multiuserchat的所有者),可他以某種方式獲取價值在此線之上設置:

submitForm.setAnswer("muc#roomconfig_roomname", "A nice formatted Room Name"); 

你看,想起來的JID的房間是不是真的很好的觀點。我希望我可以有一個字符串,其值是「一個不錯的格式化房間名稱」。

我們怎樣才能得到它?

回答

0

如果你想在config讀取的房間例如標題名稱的VAR值

Form form = chat.getConfigurationForm(); 
String value = form.getField("muc#roomconfig_roomname").getValues().next(); 

然後做你想要的值什麼都..

0

你可以很容易地得到它配置類似名稱和等,從這個代碼:

MultiUserChatManager mucManager = MultiUserChatManager.getInstanceFor(connection); 
RoomInfo info = mucManager.getRoomInfo(room.getRoom()); 

現在你可以得到它的信息是這樣的:

String mucName = info.getName(); 
Boolean isPersistence = info.isPersistent();