下面就一起來學(xué)習(xí)一下,如何查詢分組和添加分組等!
一、查詢所有分組
通過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>/**
- * 添加一個(gè)分組
- *
- * @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;
- }
- }
三、查詢某個(gè)組里面的所有好友
很簡單不解釋...
- <span style="white-space:pre"> </span>/**
- * 獲取某個(gè)組里面的所有好友
- *
- * @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 轉(zhuǎn)換為自己想要的類型,InputStream 轉(zhuǎn)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 為服務(wù)器域名
- <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一定非空,其他兩個(gè)若是有設(shè),一定非空
- }
- 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);
- }
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。