1. 用户列表

    Smack主要使用Roster进行列表管理的

    connection.getRoster();

    1. /**
    2. * 返回所有组信息 <RosterGroup>
    3. *
    4. * @return List(RosterGroup)
    5. */
    6. public static List<RosterGroup> getGroups(Roster roster) {
    7. List<RosterGroup> groupsList = new ArrayList<RosterGroup>();
    8. Collection<RosterGroup> rosterGroup = roster.getGroups();
    9. Iterator<RosterGroup> i = rosterGroup.iterator();
    10. while (i.hasNext())
    11. groupsList.add(i.next());
    12. return groupsList;
    13. }
    14. /**
    15. * 返回相应(groupName)组里的所有用户<RosterEntry>
    16. *
    17. * @return List(RosterEntry)
    18. */
    19. public static List<RosterEntry> getEntriesByGroup(Roster roster,
    20. String groupName) {
    21. List<RosterEntry> EntriesList = new ArrayList<RosterEntry>();
    22. RosterGroup rosterGroup = roster.getGroup(groupName);
    23. Collection<RosterEntry> rosterEntry = rosterGroup.getEntries();
    24. Iterator<RosterEntry> i = rosterEntry.iterator();
    25. while (i.hasNext())
    26. EntriesList.add(i.next());
    27. return EntriesList;
    28. }
    29. /**
    30. * 返回所有用户信息 <RosterEntry>
    31. *
    32. * @return List(RosterEntry)
    33. */
    34. public static List<RosterEntry> getAllEntries(Roster roster) {
    35. List<RosterEntry> EntriesList = new ArrayList<RosterEntry>();
    36. Collection<RosterEntry> rosterEntry = roster.getEntries();
    37. Iterator<RosterEntry> i = rosterEntry.iterator();
    38. while (i.hasNext())
    39. EntriesList.add(i.next());
    40. return EntriesList;
    41. }

    这里注意下,与gtalk通讯,貌似gtalk是没有分组的,汗,所以使用第三个方法直接取

    当然,还要处理,若是刚注册用户,一个组都没有的,需要默认两个组,我的好友及黑名单

    黑名单的消息,一律杀掉,不会接受处理

    1. 用户头像的获取

    使用VCard,很强大,具体自己看API吧

    可以看看VCard传回来XML的组成,含有很多信息的

    1. /**
    2. * 获取用户的vcard信息
    3. * @param connection
    4. * @param user
    5. * @return
    6. * @throws XMPPException
    7. */
    8. public static VCard getUserVCard(XMPPConnection connection, String user) throws XMPPException
    9. {
    10. VCard vcard = new VCard();
    11. vcard.load(connection, user);
    12. return vcard;
    13. }
    14. 获取头像使用
    15. /**
    16. * 获取用户头像信息
    17. */
    18. public static ImageIcon getUserImage(XMPPConnection connection, String user) {
    19. ImageIcon ic = null;
    20. try {
    21. System.out.println("获取用户头像信息: "+user);
    22. VCard vcard = new VCard();
    23. vcard.load(connection, user);
    24. if(vcard == null || vcard.getAvatar() == null)
    25. {
    26. return null;
    27. }
    28. ByteArrayInputStream bais = new ByteArrayInputStream(
    29. vcard.getAvatar());
    30. Image image = ImageIO.read(bais);
    31. ic = new ImageIcon(image);
    32. System.out.println("图片大小:"+ic.getIconHeight()+" "+ic.getIconWidth());
    33. } catch (Exception e) {
    34. e.printStackTrace();
    35. }
    36. return ic;
    37. }
    1. 组操作和用户分组操作

    主要是建立删除分组,用户添加到分组等操作

    1. /**
    2. * 添加一个组
    3. */
    4. public static boolean addGroup(Roster roster,String groupName)
    5. {
    6. try {
    7. roster.createGroup(groupName);
    8. return true;
    9. } catch (Exception e) {
    10. e.printStackTrace();
    11. return false;
    12. }
    13. }
    14. /**
    15. * 删除一个组
    16. */
    17. public static boolean removeGroup(Roster roster,String groupName)
    18. {
    19. return false;
    20. }
    21. /**
    22. * 添加一个好友  无分组
    23. */
    24. public static boolean addUser(Roster roster,String userName,String name)
    25. {
    26. try {
    27. roster.createEntry(userName, name, null);
    28. return true;
    29. } catch (Exception e) {
    30. e.printStackTrace();
    31. return false;
    32. }
    33. }
    34. /**
    35. * 添加一个好友到分组
    36. * @param roster
    37. * @param userName
    38. * @param name
    39. * @return
    40. */
    41. public static boolean addUser(Roster roster,String userName,String name,String groupName)
    42. {
    43. try {
    44. roster.createEntry(userName, name,new String[]{ groupName});
    45. return true;
    46. } catch (Exception e) {
    47. e.printStackTrace();
    48. return false;
    49. }
    50. }
    51. /**
    52. * 删除一个好友
    53. * @param roster
    54. * @param userName
    55. * @return
    56. */
    57. public static boolean removeUser(Roster roster,String userName)
    58. {
    59. try {
    60. if(userName.contains("@"))
    61. {
    62. userName = userName.split("@")[0];
    63. }
    64. RosterEntry entry = roster.getEntry(userName);
    65. System.out.println("删除好友:"+userName);
    66. System.out.println("User: "+(roster.getEntry(userName) == null));
    67. roster.removeEntry(entry);
    68. return true;
    69. } catch (Exception e) {
    70. e.printStackTrace();
    71. return false;
    72. }
    73. }
    1. 用户查询

    本来是用户操作的,分组和增删在3里讲了,这里主要是查询操作

    查询用户

    1. public static List<UserBean> searchUsers(XMPPConnection connection,String serverDomain,String userName) throws XMPPException
    2. {
    3. List<UserBean> results = new ArrayList<UserBean>();
    4. System.out.println("查询开始..............."+connection.getHost()+connection.getServiceName());
    5. UserSearchManager usm = new UserSearchManager(connection);
    6. Form searchForm = usm.getSearchForm(serverDomain);
    7. Form answerForm = searchForm.createAnswerForm();
    8. answerForm.setAnswer("Username", true);
    9. answerForm.setAnswer("search", userName);
    10. ReportedData data = usm.getSearchResults(answerForm, serverDomain);
    11. Iterator<Row> it = data.getRows();
    12. Row row = null;
    13. UserBean user = null;
    14. while(it.hasNext())
    15. {
    16. user = new UserBean();
    17. row = it.next();
    18. user.setUserName(row.getValues("Username").next().toString());
    19. user.setName(row.getValues("Name").next().toString());
    20. user.setEmail(row.getValues("Email").next().toString());
    21. System.out.println(row.getValues("Username").next());
    22. System.out.println(row.getValues("Name").next());
    23. System.out.println(row.getValues("Email").next());
    24. results.add(user);
    25. //若存在,则有返回,UserName一定非空,其他两个若是有设,一定非空
    26. }
    27. return results;
    28. }

Smack[3]用户列表,头像,组操作,用户操作的更多相关文章

  1. linux的用户管理、组管理

    用户管理:centos系统是一个多用户系统 用户分为三类: 超级用户(root) 用户id为 0 伪用户 用户id为1-499,虽然存在,但是不能用户登录 普通用户 用户id为500-60000 用户 ...

  2. Linux命令(用户管理、组和时间管理)

    用户管理    Linux系统是一个多用用户的系统 用户分为三类:      超级用户(root)用户的id是0     伪用户     用户的id是1----499,虽然存在,但不能被登录      ...

  3. Identity角色管理五(添加用户到角色组)

    因需要在用户列表中点详情按钮来到当前页,所以需要展示分组详情,并展示当前所属角色组的用户 public async Task<ActionResult> Details(string id ...

  4. CentOS 用户与群组

    目录 1.用户管理 1.1.切换用户 1.2.添加用户 1.3.删除用户 1.4.修改用户 2.群组管理 2.1.查看群组 2.2.添加群组 2.3.删除群组 2.4.修改群组 1.用户管理 Linu ...

  5. linux下添加用户到sudo组 并禁止sudo用户修改密码

    linux下添加用户到sudo组 创建用户  useradd hanli 为新用户设置密码  passwd hanli 创建用户组  groupadd  op 将用户添加到用户组  usermod - ...

  6. chmod a+w . 权限控制 su、sudo 修改文件所有者和文件所在组 添加用户到sudoer列表中 当前用户信息

    对当前目录对所有用户开放读写权限 chmod a+r . $ sudo chmod -R a+w /usr/lib/python2.7 所有用户添加文件的写权限 [linux]su.sudo.sudo ...

  7. Linux用户和组的管理操作

    用户和组的管理操作 命令中涉及的单词和简写: 用户:user:组:group : 增加:add :  修改:modify  mod ;  删除 : delete  del 增加用户     /etc/ ...

  8. linux组、用户操作相关

    Linux删除用户组和用户时常用的一些命令和参数.1.从组中删除用户编辑/etc/group 找到GROUP1那一行,删除 A或者用命令gpasswd -d A GROUP2.建用户:adduser ...

  9. linux—【用户和组的管理操作】(5)

    用户:user 组:group 增加:add 修改:modify   mod 删除:delete    del useradd     增加用户 usermod    修改用户 userdel     ...

随机推荐

  1. objective-C 自定义对象归档的实现

    自定义对象要实现归档必须实现NSCoding协议 NSCoding协议有两个方法,encodeWithCoder方法对对象的属性数据做编码处理,initWithCoder解码归档数据来初始化对象. # ...

  2. MySQL数据库乱码 - Linux下乱码问题一

    乱码问题是很让人抓狂的问题,下面我将记录一下linux下mysql乱码问题的解决方法. mysql在linux下乱码问题 一.操作 mysql默认字符集是latin1,但是我们大部分程序使用的字符集是 ...

  3. 转载:最小生成树-Prim算法和Kruskal算法

    本文摘自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html 最小生成树-Prim算法和Kruskal算法 Prim算 ...

  4. ngui 脚本绘制sprite

    public GameObject _background; public UIAtlas atlas; private Dictionary<int, UISprite> _allCar ...

  5. SSH2中memcached作为hibernate二级缓存

    一.安装memcached服务端 1. 下载memcached的windows稳定版,解压放某个盘下面,比如在c:\memcached2. 在CMD下输入 "c:\memcached\mem ...

  6. I.MX6 Android i2c-tools porting

    /************************************************************************** * I.MX6 Android i2c-tool ...

  7. ViewPager onPageChangeListener总结

    今天在做项目的时候,由于要处理viewPager页面滑动的事件,所以对其进行了一个小小的研究: 首先ViewPager在处理滑动事件的时候要用到OnPageChangeListener OnPageC ...

  8. STL sort()函数

    C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点.STL 排序算法同样需要保持高效.因此,对于不同的需求,STL提供的不同的函数,不同的函数,实现的算法又不尽相同 ...

  9. POJ 1236 Network of Schools 有向图强连通分量

    参考这篇博客: http://blog.csdn.net/ascii991/article/details/7466278 #include <stdio.h> #include < ...

  10. javascript设计模式3

    门户大开式对象 var Book=function(isbn,title,author){ if (isbn==undefined) throw new Error("不合法"); ...