《Smack开发总结 (三)好友管理专题基本操作》
转载请注明来自 傻小孩b_移动开发(http://www.jianshu.com/users/d388bcf9c4d3)喜欢的可以关注我,不定期总结文章!您的支持是我的动力哈!
2016,再见。2017,你好。
2016年依然承载了太多美好的回忆,这一年培养了看书的习惯、培养了写博客的习惯。感谢过去努力的自己,寄望未来的自己。每天的时间安排,每天的小总结,每天的阅读,慢慢培养这些小细节。希望2017年的自己,向着自己的目标不断前行,技术、视野、规划。努力成为想要变成的自己!
上一篇文章,小结了smack的登录以及基本的好友管理回调,这一篇小结smack中对好友管理专题的基本操作,包括获取好友、添加好友、删除好友等操作。
(1)获取好友
public void getAllRosters() {
if (!mRoster.isLoaded()) {
try {
mRoster.reloadAndWait();
} catch (SmackException.NotLoggedInException |
SmackException.NotConnectedException |
InterruptedException e) {
e.printStackTrace();
}
}
// 这里获取好友后会回调到 rosterEntires 方法,具体看上一篇文章
mRoster.getEntriesAndAddListener(this, this);
}
(2)删除好友
public void deleteRoster(String user) {
RosterEntry entry = mRoster.getEntry(user);
if (entry != null) {
try {
mRoster.removeEntry(entry);
} catch (SmackException.NotLoggedInException |
SmackException.NoResponseException |
XMPPException.XMPPErrorException |
SmackException.NotConnectedException e) {
e.printStackTrace();
}
}
(3)添加好友
private void addRosyer(String user, String name, String[] groupName) {
if (mConnection.isAuthenticated()) {
try {
mRoster.createEntry(user, name, groupName);
} catch (Exception e) {
e.printStackTrace();
}
}
}
(4)改变好友分组
public void updateRosterByGroup(String user, String curGroup, String mvGroup) {
RosterGroup cGroup = mRoster.getGroup(curGroup);
RosterGroup mGroup = mRoster.getGroup(mvGroup);
RosterEntry entry = null;
if (cGroup != null) {
entry = cGroup.getEntry(user);
if (entry != null) {
try {
if (mGroup == null) {
// 不存在该分组 即创建
mGroup = mRoster.createGroup(mvGroup);
}
cGroup.removeEntry(entry);
mGroup.addEntry(entry);
} catch (SmackException.NoResponseException |
SmackException.NotConnectedException |
XMPPException.XMPPErrorException e) {
e.printStackTrace();
}
}
}
}
(5)更新好友分组名称
public void setGroupName(String groupName, String modifyName) {
RosterGroup group = mRoster.getGroup(groupName);
if (group != null) {
try {
group.setName(modifyName);
} catch (SmackException.NotConnectedException |
SmackException.NoResponseException |
XMPPException.XMPPErrorException e) {
e.printStackTrace();
}
}
}
(6)添加分组
public void addGroup(String groupName) {
mRoster.createGroup(groupName);
}
对于群聊,在默认的openfire提供的是聊天室的功能。如果要实现类似QQ群的功能,更加强化重视熟人之间、强化信息分享、具有可沉淀性。而不是陌生人居多的聊天室,因此群聊是需要自己重新设计开发,这个有兴趣的开发者可以了解下openfire的插件开发,有兴趣的可以联系我,一起学习开发。
傻小孩b mark共勉,写给在成长路上奋斗的你