Smack[3]用户列表,头像,组操作,用户操作
- 用户列表
Smack主要使用Roster进行列表管理的
connection.getRoster();
- /**
- * 返回所有组信息 <RosterGroup>
- *
- * @return List(RosterGroup)
- */
- public static List<RosterGroup> getGroups(Roster roster) {
- List<RosterGroup> groupsList = new ArrayList<RosterGroup>();
- Collection<RosterGroup> rosterGroup = roster.getGroups();
- Iterator<RosterGroup> i = rosterGroup.iterator();
- while (i.hasNext())
- groupsList.add(i.next());
- return groupsList;
- }
- /**
- * 返回相应(groupName)组里的所有用户<RosterEntry>
- *
- * @return List(RosterEntry)
- */
- public static List<RosterEntry> getEntriesByGroup(Roster roster,
- String groupName) {
- List<RosterEntry> EntriesList = new ArrayList<RosterEntry>();
- RosterGroup rosterGroup = roster.getGroup(groupName);
- Collection<RosterEntry> rosterEntry = rosterGroup.getEntries();
- Iterator<RosterEntry> i = rosterEntry.iterator();
- while (i.hasNext())
- EntriesList.add(i.next());
- return EntriesList;
- }
- /**
- * 返回所有用户信息 <RosterEntry>
- *
- * @return List(RosterEntry)
- */
- public static List<RosterEntry> getAllEntries(Roster roster) {
- List<RosterEntry> EntriesList = new ArrayList<RosterEntry>();
- Collection<RosterEntry> rosterEntry = roster.getEntries();
- Iterator<RosterEntry> i = rosterEntry.iterator();
- while (i.hasNext())
- EntriesList.add(i.next());
- return EntriesList;
- }
这里注意下,与gtalk通讯,貌似gtalk是没有分组的,汗,所以使用第三个方法直接取
当然,还要处理,若是刚注册用户,一个组都没有的,需要默认两个组,我的好友及黑名单
黑名单的消息,一律杀掉,不会接受处理
- 用户头像的获取
使用VCard,很强大,具体自己看API吧
可以看看VCard传回来XML的组成,含有很多信息的
- /**
- * 获取用户的vcard信息
- * @param connection
- * @param user
- * @return
- * @throws XMPPException
- */
- public static VCard getUserVCard(XMPPConnection connection, String user) throws XMPPException
- {
- VCard vcard = new VCard();
- vcard.load(connection, user);
- return vcard;
- }
- 获取头像使用
- /**
- * 获取用户头像信息
- */
- public static ImageIcon getUserImage(XMPPConnection connection, String user) {
- ImageIcon ic = null;
- try {
- System.out.println("获取用户头像信息: "+user);
- VCard vcard = new VCard();
- vcard.load(connection, user);
- if(vcard == null || vcard.getAvatar() == null)
- {
- return null;
- }
- ByteArrayInputStream bais = new ByteArrayInputStream(
- vcard.getAvatar());
- Image image = ImageIO.read(bais);
- ic = new ImageIcon(image);
- System.out.println("图片大小:"+ic.getIconHeight()+" "+ic.getIconWidth());
- } catch (Exception e) {
- e.printStackTrace();
- }
- return ic;
- }
- 组操作和用户分组操作
主要是建立删除分组,用户添加到分组等操作
- /**
- * 添加一个组
- */
- public static boolean addGroup(Roster roster,String groupName)
- {
- try {
- roster.createGroup(groupName);
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- /**
- * 删除一个组
- */
- public static boolean removeGroup(Roster roster,String groupName)
- {
- return false;
- }
- /**
- * 添加一个好友 无分组
- */
- public static boolean addUser(Roster roster,String userName,String name)
- {
- try {
- roster.createEntry(userName, name, null);
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- /**
- * 添加一个好友到分组
- * @param roster
- * @param userName
- * @param name
- * @return
- */
- public static boolean addUser(Roster roster,String userName,String name,String groupName)
- {
- try {
- roster.createEntry(userName, name,new String[]{ groupName});
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- /**
- * 删除一个好友
- * @param roster
- * @param userName
- * @return
- */
- public static boolean removeUser(Roster roster,String userName)
- {
- try {
- if(userName.contains("@"))
- {
- userName = userName.split("@")[0];
- }
- RosterEntry entry = roster.getEntry(userName);
- System.out.println("删除好友:"+userName);
- System.out.println("User: "+(roster.getEntry(userName) == null));
- roster.removeEntry(entry);
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- 用户查询
本来是用户操作的,分组和增删在3里讲了,这里主要是查询操作
查询用户
- public static List<UserBean> searchUsers(XMPPConnection connection,String serverDomain,String userName) throws XMPPException
- {
- List<UserBean> results = new ArrayList<UserBean>();
- System.out.println("查询开始..............."+connection.getHost()+connection.getServiceName());
- UserSearchManager usm = new UserSearchManager(connection);
- Form searchForm = usm.getSearchForm(serverDomain);
- Form answerForm = searchForm.createAnswerForm();
- answerForm.setAnswer("Username", true);
- answerForm.setAnswer("search", userName);
- ReportedData data = usm.getSearchResults(answerForm, serverDomain);
- Iterator<Row> it = data.getRows();
- Row row = null;
- UserBean user = null;
- while(it.hasNext())
- {
- user = new UserBean();
- row = it.next();
- user.setUserName(row.getValues("Username").next().toString());
- user.setName(row.getValues("Name").next().toString());
- user.setEmail(row.getValues("Email").next().toString());
- System.out.println(row.getValues("Username").next());
- System.out.println(row.getValues("Name").next());
- System.out.println(row.getValues("Email").next());
- results.add(user);
- //若存在,则有返回,UserName一定非空,其他两个若是有设,一定非空
- }
- return results;
- }
Smack[3]用户列表,头像,组操作,用户操作的更多相关文章
- linux的用户管理、组管理
用户管理:centos系统是一个多用户系统 用户分为三类: 超级用户(root) 用户id为 0 伪用户 用户id为1-499,虽然存在,但是不能用户登录 普通用户 用户id为500-60000 用户 ...
- Linux命令(用户管理、组和时间管理)
用户管理 Linux系统是一个多用用户的系统 用户分为三类: 超级用户(root)用户的id是0 伪用户 用户的id是1----499,虽然存在,但不能被登录 ...
- Identity角色管理五(添加用户到角色组)
因需要在用户列表中点详情按钮来到当前页,所以需要展示分组详情,并展示当前所属角色组的用户 public async Task<ActionResult> Details(string id ...
- CentOS 用户与群组
目录 1.用户管理 1.1.切换用户 1.2.添加用户 1.3.删除用户 1.4.修改用户 2.群组管理 2.1.查看群组 2.2.添加群组 2.3.删除群组 2.4.修改群组 1.用户管理 Linu ...
- linux下添加用户到sudo组 并禁止sudo用户修改密码
linux下添加用户到sudo组 创建用户 useradd hanli 为新用户设置密码 passwd hanli 创建用户组 groupadd op 将用户添加到用户组 usermod - ...
- chmod a+w . 权限控制 su、sudo 修改文件所有者和文件所在组 添加用户到sudoer列表中 当前用户信息
对当前目录对所有用户开放读写权限 chmod a+r . $ sudo chmod -R a+w /usr/lib/python2.7 所有用户添加文件的写权限 [linux]su.sudo.sudo ...
- Linux用户和组的管理操作
用户和组的管理操作 命令中涉及的单词和简写: 用户:user:组:group : 增加:add : 修改:modify mod ; 删除 : delete del 增加用户 /etc/ ...
- linux组、用户操作相关
Linux删除用户组和用户时常用的一些命令和参数.1.从组中删除用户编辑/etc/group 找到GROUP1那一行,删除 A或者用命令gpasswd -d A GROUP2.建用户:adduser ...
- linux—【用户和组的管理操作】(5)
用户:user 组:group 增加:add 修改:modify mod 删除:delete del useradd 增加用户 usermod 修改用户 userdel ...
随机推荐
- Go语言Revel框架 环境搭建
1.首先参考连个链接 http://blog.csdn.net/creak_phone/article/details/12620969 http://www.geek521.com/?p=616 2 ...
- sublime打开文件时自动生成并打开.dump文件
GBK Encoding Support 没有安装前打开ASNI格式编码文件会乱码,安装成功重启则可以打开正常 关于.dump文件生成的解释: 当打开一个非utf-8格式且包含汉字的文件时,subli ...
- poj 2418 Hardwood Species (map)
题目:http://poj.org/problem?id=2418 在poj 上交题总是有各种错误,再次感叹各个编译器. c++ AC代码,G++为超时,上代码: #include<cstdio ...
- [原]Unity3D深入浅出 - GUI控件
Unity的GUI类提供了丰富的界面控件,通过组合这些控件,完成和用户交互的界面. Lable:绘制文本和图片 Box:绘制一个图形框 Button:绘制一个响应单击事件的按钮 RepeatButto ...
- [原]Unity3D深入浅出 - 认识开发环境中的RenderSettings面板
点击菜单栏的Edit项里的RenderSettings即可打开该面板. Fog:在Scene中开启雾效果 Fog Color:雾的颜色 Fog Mode:雾效果的模式,Linear(线性雾效果) Ex ...
- jquery 图片放大
上一篇是关于手风琴效果的,但是有时候我们需要放大的图片大小不规律,想要在屏幕中间显示大图. 图片放大可以做为单独的效果,也可以和其他的效果结合起来.比如Demo 里的Demo5.html是以图片无缝切 ...
- jQuery Mobile 入门教程
你每天都会对着它讲话,和它玩游戏,用它看新闻——没错,它就是你裤兜里的智能手机.android,黑莓还是iphone?为了让你清楚意识到究竟哪些才算是智能手机,我在下面总结了一个智能手机系统/设备的列 ...
- postgresql 行转列,拼接字符串
create table k_user ( op_id ) not null, op_name ) not null, password ) not null, real_name ) not nul ...
- 【Struts】strust.xml中<result type="">所有类型详解
在默认时,<result>标签的type属性值是“dispatcher”(实际上就是转发,forward).开发人员可以根据自己的需要指定不同的类型,如redirect.stream等.如 ...
- 用纯css写出三角形
1.新建一个元素,随便什么元素,不过我习惯性的会用块元素来做.如果行内元素就display:block它.<div class="triangle"></div& ...