要获得Joined Room List,我尝试过:,
getJoinedRooms(connection, "xmpptestuser1@server.com");// line:213
Iterator<String> rooms = MultiUserChat.getJoinedRooms(conn, userJID);// line:689
//System.out.println("ROOM:"+rooms);
while (rooms.hasNext()) {
System.out.println("Room list: "+new DiscoverItems.Item(rooms.next()).toString());;
}
但是,它给了NPE。那么如何获取加入的组列表呢? 有1个加入组,其中3个成员是我服务器端的参与者。 的 logcat的:
I/System.out(948): Room: join
W/System.err(948): java.lang.NullPointerException
W/System.err(948): at org.jivesoftware.smackx.muc.MultiUserChat.getJoinedRooms(MultiUserChat.java:180)
W/System.err(948): at org.apache.android.xmpp.XMPPClient.getJoinedRooms(XMPPClient.java:689)
W/System.err(948): at org.apache.android.xmpp.XMPPClient$4.onClick(XMPPClient.java:213)
W/System.err(948): at android.view.View.performClick(View.java:4084)
W/System.err(948): at android.view.View$PerformClick.run(View.java:16966)
W/System.err(948): at android.os.Handler.handleCallback(Handler.java:615)
W/System.err(948): at android.os.Handler.dispatchMessage(Handler.java:92)
W/System.err(948): at android.os.Looper.loop(Looper.java:137)
W/System.err(948): at android.app.ActivityThread.main(ActivityThread.java:4745)
W/System.err(948): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(948): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err(948): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
W/System.err(948): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
W/System.err(948): at dalvik.system.NativeStart.main(Native Method)
要获得RoomInfo,我尝试过:
RoomInfo info = null;
try {
info = MultiUserChat.getRoomInfo(conn,chatRoomName);
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Number of occupants:" + info.getOccupantsCount());
如何获取所有成员的详细信息,例如他们的Nick Name,JID,加入组中的所有者?我已经尝试了几乎所有解决方案来自SO.Any帮助将不胜感激!
答案 0 :(得分:0)
也不适合我。我所做的是在发送邀请时添加了以逗号分隔的用户列表。
muc.invite(friendsJID, friendsJIDsList.toString());
收到邀请后
public void invitationReceived(Connection conn, String room, String inviter, String reason, String password,
Message message) {
List<String> list = Arrays.asList(reason.split("\\s*,\\s*"));
此列表包含组中的所有用户ID和使用它我得到用户的Vcards。 希望这会有所帮助。