下面就一块儿来学习一下,如何查询分组和添加分组等!java
1、查询全部分组 经过Roster来获取全部分组,Roster能够经过connection.getRoster()来获得。服务器
[java] view plaincopyprint? <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;
}ide
/** * 获取全部组 * * @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; }
2、添加分组学习
也同样经过roster来添加分组,groupName 为分组名。.net
[java] view plaincopyprint? <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;
}
}code
/** * 添加一个分组 * * @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; } }
3、查询某个组里面的全部好友 很简单不解释...orm
[java] view plaincopyprint? <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;
}server
/** * 获取某个组里面的全部好友 * * @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; }
4、查询全部好友信息blog
很简单rem
[java] view plaincopyprint? <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;
}
/** * 获取全部好友信息 * * @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; }
5、获取用户VCard信息
[java] view plaincopyprint? <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信息 * * @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; }
6、获取用户头像信息
经过Vcard来获取用户头像信息,能够把 InputStream 转换为本身想要的类型,InputStream 转Drawable
这篇文章里能够找到 http://blog.csdn.net/h7870181/article/details/8663760
[java] view plaincopyprint? <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); } /** * 获取用户头像信息 * * @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); }
7、添加好友(有、无分组)
[java] view plaincopyprint? <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; } } /** * 添加好友 无分组 * * @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; } }
8、删除好友
[java] view plaincopyprint? <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; } } /** * 删除好友 * * @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; } }
9、查询用户
serverDoMain 为服务器域名
[java] view plaincopyprint? <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; } /** * 查询用户 * * @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; }
10、修改用户头像
[java] view plaincopyprint? <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); }