spark二次开发之广播消息(针对群用户)的实现
代码如下
Java代码
try {
groupNode = new CheckNode("群");
groupNodes.add(groupNode);
rosterNode.add(groupNode);
manager = BookmarkManager.getBookmarkManager(SparkManager.getConnection());
Collection lists = manager.getBookmarkedConferences();
for(BookmarkedConference bookMark:lists){
// if(bookMark.isAutoJoin()){//只能向自动登录的房间发送消息
CheckNode itemNode = new CheckNode(bookMark.getName());//群名称节点
groupNode.add(itemNode);
for (int i = 0; i
Map mbs =ConferenceUtils.getAllMembersInRoom(bookMark.getJid());//得到群聊房间的所有用户
Set keys = mbs.keySet();
Iterator iter2 = keys.iterator();
while (iter2.hasNext()) {
String key = iter2.next();
Affiliate affiliate = mbs.get(key);
if (affiliate == null)
return;
String jid = affiliate.getJid();
String nickName =getNickName(jid);
CheckNode gNode = new CheckNode(nickName, false, null);//群成员节点
gNode.setAssociatedObject(jid);//设置节点值
itemNode.add(gNode);
nodes.add(gNode);//加入到所有的checkbox选项中
}
}
}
// }
} catch (XMPPException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
获取用户昵称代码:
Java代码
private String getVcardName(String participantJID, String nickname,
String hostName) {
try {
VCard v = new VCard();
v.load(SparkManager.getConnection(), participantJID);
nickname = v.getFirstName();
if (nickname == null || nickname.equals("")) {
nickname = participantJID.substring(0,
participantJID.indexOf("@"));
}
} catch (XMPPException e) {
e.printStackTrace();
}
return nickname;
}
效果图:
注意:必须为登录后自动连接的群才可以获取所有用户