1

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を与えます。では、参加したグループのリストを取得するにはどうすればよいですか? 私のサーバー側には、3 人のメンバーが参加している 1 つの参加グループがあります。 ログキャット:

 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()); 

参加しているグループのニックネーム、JID、所有者などのすべてのメンバーの詳細を取得する方法は? SO のほぼすべてのソリューションを試しました。

4

1 に答える 1

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 が含まれており、それを使用してユーザーの Vcard を取得します。お役に立てれば。

于 2015-01-06T09:30:50.833 に答える