我正在使用MUC使用smack进行群聊。我想获取用户已经参与过的MUC房间列表,如whatsapp。
使用belove代码,我只能获得用户加入的房间,但我需要获得已经成为会员的所有组。
这是我的代码:
List<EntityBareJid> joinedRoomes = manager.getJoinedRooms(conn);
for (EntityBareJid jRoomName : joinedRoomes) {
Log.e("Group Chat : Joined room = " , jRoomName.toString());
}
有人帮我吗?
我也想为MUC组添加头像图像。我该怎么办?
答案 0 :(得分:1)
没有命令来获取帐户是成员/管理员/所有者的房间的列表...只有命令来获取特定房间的从属关系列表。
我也想为MUC组添加头像图像。我该怎么办?
一个房间没有vcard,因此它没有地方可以存储图像。但是它有一个“描述”字段,您可以在其中放置头像图像的URL,然后修改客户端以读取该URL并将图像显示为房间头像。
答案 1 :(得分:0)
您可以尝试通过这种方式获取小组成员和详细信息
public static List<String> getRoomInfo(String grp_id) {
List<String> jids = new ArrayList<>();
try {
EntityBareJid mucJid = JidCreate.entityBareFrom(grp_id + "@" + Constants.GRP_SERVICE);
mucChatManager = MultiUserChatManager.getInstanceFor(MyApplication.connection);
mucChat = mucChatManager.getMultiUserChat(mucJid);
RoomInfo info = mucChatManager.getRoomInfo(mucJid);
LogM.e("Number of occupants:" + info.getOccupantsCount());
LogM.e("Room Subject:" + info.getSubject());
Log.e(TAG, "members " + mucChat.getMembers().size());
List<Affiliate> affiliatesMembers = mucChat.getMembers();
Log.e(TAG, "members1 " + affiliatesMembers.size());
for (Affiliate affiliate : affiliatesMembers) {
Log.e(TAG, "members: Jid:" + affiliate.getJid()
);
if (affiliate.getJid() != null) {
jids.add(affiliate.getJid().toString());
}
}
return jids;
} catch (SmackException.NoResponseException | XMPPException.XMPPErrorException | InterruptedException | XmppStringprepException e) {
Log.e(TAG, "Group Error : " + e.getMessage());
} catch (SmackException.NotConnectedException e) {
Log.e(TAG, "Group Error2 : " + e.getMessage());
}
return jids;
}