一、查询所有分组
通过 Roster 来获取所有分组,Roster 可以通过 connection.getRoster() 来得到。
<span style="white-space:pre"> </span>/**
* 获取所有组
*
* @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 为分组名。
<span style="white-space:pre"> </span>/** * 添加一个分组 * * @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; } }
三、查询某个组里面的所有好友
很简单不解释...
<span style="white-space:pre"> </span>/** * 获取某个组里面的所有好友 * * @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; }
四、查询所有好友信息
很简单
<span style="white-space:pre"> </span>/** * 获取所有好友信息 * * @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信息
<span style="white-space:pre"> </span>/** * 获取用户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
<span style="white-space:pre"> </span>/** * 获取用户头像信息 * * @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); }
七、添加好友(有、无分组)
<span style="white-space:pre"> </span>/** * 添加好友 无分组 * * @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; } }
八、删除好友
<span style="white-space:pre"> </span>/** * 删除好友 * * @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 为服务器域名
<span style="white-space:pre"> </span>/** * 查询用户 * * @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; }
十、修改用户头像
<span style="white-space:pre"> </span>/** * 修改用户头像 * * @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); vcard.save(connection); }
Icon Image:

Theme Zone:
IDZone
Include in RSS:
1