openfire Android学习(二)----对分组、好友和头像等一些操作

it2022-05-05  140

一、查询所有分组

通过Roster来获取所有分组,Roster可以通过connection.getRoster()来得到。

[java]  view plain copy /**       * 获取所有组       *        * @param roster       * @return 所有组集合       */       public static List<RosterGroup> getGroups(Roster roster) {           List<RosterGroup> grouplist = new ArrayList<RosterGroup>();           Collection<RosterGroup> rosterGroup = roster.getGroups();           Iterator<RosterGroup> i = rosterGroup.iterator();           while (i.hasNext()) {               grouplist.add(i.next());           }           return grouplist;       }  

二、添加分组

也一样通过roster来添加分组,groupName 为分组名。

[java]  view plain copy /**       * 添加一个分组       *        * @param roster       * @param groupName       * @return       */       public static boolean addGroup(Roster roster, String groupName) {           try {               roster.createGroup(groupName);               return true;           } catch (Exception e) {               e.printStackTrace();               return false;           }       }  

三、查询某个组里面的所有好友

[java]  view plain copy /**       * 获取某个组里面的所有好友       *        * @param roster       * @param groupName       *            组名       * @return       */       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;       }  

四、查询所有好友信息

[java]  view plain copy /**       * 获取所有好友信息       *        * @param roster       * @return       */       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;       }  

五、获取用户VCard信息

[java]  view plain copy /**       * 获取用户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;       }  

六、获取用户头像信息

通过Vcard来获取用户头像信息,可以把 InputStream 转换为自己想要的类型,InputStream 转Drawable 

这篇文章里可以找到  http://blog.csdn.net/h7870181/article/details/8663760

[java]  view plain copy /**       * 获取用户头像信息       *        * @param connection       * @param user       * @return       */       public static Drawable getUserImage(XMPPConnection connection, String user) {           ByteArrayInputStream bais = null;           try {               VCard vcard = new VCard();               // 加入这句代码,解决No VCard for               ProviderManager.getInstance().addIQProvider("vCard""vcard-temp",                       new org.jivesoftware.smackx.provider.VCardProvider());                  vcard.load(connection, user+"@"+connection.getServiceName());                  if (vcard == null || vcard.getAvatar() == null)                   return null;               bais = new ByteArrayInputStream(vcard.getAvatar());              } catch (Exception e) {               e.printStackTrace();           }           if (bais == null)               return null;           return FormatTools.getInstance().InputStream2Drawable(bais);       }  

七、添加好友(有、无分组)

[java]  view plain copy /**       * 添加好友 无分组       *        * @param roster       * @param userName       * @param name       * @return       */       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       * @param groupName       * @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;           }       }  

八、删除好友

[java]  view plain copy /**       * 删除好友       *        * @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;           }       }  

九、查询用户 

serverDoMain 为服务器域名

[java]  view plain copy /**       * 查询用户       *        * @param connection       * @param serverDomain       * @param userName       * @return       * @throws XMPPException       */       public static List<User> searchUsers(XMPPConnection connection,               String serverDomain, String userName) throws XMPPException {           List<User> results = new ArrayList<User>();           System.out.println("查询开始..............." + connection.getHost()                   + connection.getServiceName());              UserSearchManager usm = new UserSearchManager(connection);              Form searchForm = usm.getSearchForm(serverDomain);           Form answerForm = searchForm.createAnswerForm();           answerForm.setAnswer("userAccount"true);           answerForm.setAnswer("userPhote", userName);           ReportedData data = usm.getSearchResults(answerForm, serverDomain);              Iterator<Row> it = data.getRows();           Row row = null;           User user = null;           while (it.hasNext()) {               user = new User();               row = it.next();               user.setUserAccount(row.getValues("userAccount").next().toString());               user.setUserPhote(row.getValues("userPhote").next().toString());                  System.out.println(row.getValues("userAccount").next());               System.out.println(row.getValues("userPhote").next());               results.add(user);               // 若存在,则有返回,UserName一定非空,其他两个若是有设,一定非空           }           return results;       }  

十、修改用户头像

[java]  view plain copy /**       * 修改用户头像       *        * @param connection       * @param f       * @throws XMPPException       * @throws IOException       */       public static void changeImage(XMPPConnection connection, File f)               throws XMPPException, IOException {              VCard vcard = new VCard();           vcard.load(connection);              byte[] bytes;              bytes = getFileBytes(f);           String encodedImage = StringUtils.encodeBase64(bytes);           vcard.setAvatar(bytes, encodedImage);           vcard.setEncodedImage(encodedImage);           vcard.setField("PHOTO""<TYPE>image/jpg</TYPE><BINVAL>" + encodedImage                   + "</BINVAL>"true);              ByteArrayInputStream bais = new ByteArrayInputStream(vcard.getAvatar());           FormatTools.getInstance().InputStream2Bitmap(bais);     

转载于:https://www.cnblogs.com/jasonkent27/p/4098440.html

相关资源:各显卡算力对照表!

最新回复(0)