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. sc.exe管理系统服务

    sc.exe管理系统服务 下面介绍SC,SC QC,and SC QUERY sc.exe create HomerSatelliteDesktopGC binPath= "D:XXXXXX ...

  2. hdu 4642 Fliping game(博弈)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4642 题意:给定一个棋盘,0表示向下,1表示向上,选一个x,y, 然后翻转从x,y 到n,m.的所有硬币, ...

  3. Nhibernate与Dapper对比,及Nhibernate增删改和9种查询语法

    1,Sql语法. NH:HQL Dapper:原生Sql. 点评:原生Sql可以直接放在数据库里执行,Hql不行,且Hql增加学习负担.(Hn也可以原生Sql,但好像用的不多呀) 2,开发速度. NH ...

  4. Codeforces Round #306 (Div. 2)

    A. Two Substrings You are given string s. Your task is to determine if the given string s contains t ...

  5. PHPUNIT 单元测试

    在windows上的安装可以参考其手册 首先下载phpunit.phar文件 1. 为php的二进制可执行文件建立 一个目录,如C:\bin 2. 将C:\bin添加到系统环境变量中, 3. 打开命令 ...

  6. linux 查看用户所在组(groups指令的使用) 含实例

    经常将某个文件夹的权限赋给某个用户的时候,也需要配置该用户所在的组,因此,我们需要查看该用户有哪些组,我们可以使用如上命令查看用户所在组 [oracle@gl ~]$ vi /etc/group ro ...

  7. 【Python】不定期更新学习小问题整理

    1 ctrl+D 退出python 2 from __future__ import division  小数除法  1/2    整除符号   //  比如4//2 3 为什么要写这个? reloa ...

  8. HDU 4825-Xor Sum(trie)

    题意: 给你一组数,开始询问给一个数  求组中与该数异或值最大的数. 分析:根据异或的特点 要想得到的异或值最大 尽可能的让两个数的每位都相反 先把给定的一组数建树,数的最后一位对应的节点保存这个数的 ...

  9. RhinoMocks简单范例

    using System; namespace MockTest { public interface IBBB { int Number { get; } int Compute(int j); i ...

  10. 50道经典的JAVA编程题 (1-5)

    后天java考试,现在闲着也是闲着,来做做java题吧. 前不久在网上看见了50道java算法编程题,感觉还不错,记得大一学C语言的时候做过一些,现在用java来回顾下吧,也算应付考试吧. 代码要是有 ...