简介
该功能是基于Xmpp协议的ejabberd服务器黑名单的实现。黑名单的作用是把消息扼杀在服务器中。
由于功能强大,代码实现简单,这就不做任何介绍直接贴出代码了,懂Xmpp同学一看便知。
功能代码
功能分为:添加黑名单、删除黑名单、获取黑名单s,这些功能代码经测试通过(只是实现功能,而未优化代码),代码如下:
public boolean addToPrivacyList(String name) { // 添加到黑名单
try {
PrivacyListManager privacyManager = PrivacyListManager
.getInstanceFor(XmppTool.getConnection());
if (privacyManager == null) {
return false;
}
PrivacyList[] plists = privacyManager.getPrivacyLists();
if (plists.length == 0) {// 没有黑名单或是名单中没有列,直接getPrivacyList会出错
List<PrivacyItem> items = new ArrayList<PrivacyItem>();
Log.i("", "addToPrivacyList plists.length==0");
PrivacyItem newitem = new PrivacyItem("jid", false, 100);
newitem.setValue("BLACKNAME" + "@"
+ XmppTool.getConnection().getServiceName());
items.add(newitem);
privacyManager.updatePrivacyList(Black_List, items);
privacyManager.setActiveListName(Black_List);
return true;
}
PrivacyList plist = privacyManager.getPrivacyList(Black_List);
if (plist != null) {
String ser = "@" + XmppTool.getConnection().getServiceName();
List<PrivacyItem> items = plist.getItems();
for (PrivacyItem item : items) {
String from = item.getValue().substring(0,
item.getValue().indexOf(ser));
Log.i("",
"addToPrivacyList item.getValue=" + item.getValue());
if (from.equalsIgnoreCase(name)) {
items.remove(item);
break;
}
}
PrivacyItem newitem = new PrivacyItem("jid", false, 100);
newitem.setValue(name + "@"
+ XmppTool.getConnection().getServiceName());
items.add(newitem);
Log.i("", "addToPrivacyList item.getValue=" + newitem.toXML());
Log.i("", "deleteFromPrivacyList items size=" + items.size());
privacyManager.updatePrivacyList(Black_List, items);
privacyManager.setActiveListName(Black_List);
}
return true;
} catch (XMPPException ex) {
// Logger.getLogger(XMPP.class.getName()).log(Level.SEVERE, null,
// ex);
}
return false;
}
public boolean deleteFromPrivacyList(String name) {// 删除黑名单
try {
PrivacyListManager privacyManager = PrivacyListManager
.getInstanceFor(XmppTool.getConnection());
if (privacyManager == null) {
return false;
}
PrivacyList plist = privacyManager.getPrivacyList(Black_List);
if (plist != null) {
String ser = "@" + XmppTool.getConnection().getServiceName();
List<PrivacyItem> items = plist.getItems();
for (PrivacyItem item : items) {
String from = item.getValue().substring(0,
item.getValue().indexOf(ser));
Log.i("",
"deleteFromPrivacyList item.getValue="
+ item.getValue());
if (from.equalsIgnoreCase(name)) {
Log.i("", "deleteFromPrivacyList find object");
items.remove(item);
break;
}
}
Log.i("", "deleteFromPrivacyList items size=" + items.size());
privacyManager.updatePrivacyList(Black_List, items);
}
} catch (XMPPException ex) {
}
return true;
}
public List<String> getPrivacyList() { // 获取所有黑名单
List<String> privacyList = new ArrayList<String>();
try {
PrivacyListManager privacyManager = PrivacyListManager
.getInstanceFor(XmppTool.getConnection());
if (privacyManager == null) {
return privacyList;
}
String ser = "@" + XmppTool.getConnection().getServiceName();
PrivacyList plist = privacyManager.getPrivacyList(Black_List);
if (plist == null) {// 没有黑名单或是名单中没有列,直接getPrivacyList会出错
List<PrivacyItem> items = plist.getItems();
for (PrivacyItem item : items) {
String from = item.getValue().substring(0,
item.getValue().indexOf(ser));
privacyList.add(from);
}
} else {
return privacyList;
}
} catch (XMPPException ex) {
}
return privacyList;
}
结论
功能强大,代码简单。
http://asmack.freakempire.de 获取asmack 最新源码
分享到:
相关推荐
Android XMPP好友列表+聊天,服务器当前设置192.168.1.5
在android应用程序中使用xmpp协议的网络操作实例
android 电子文档 XMPP总结 文档
Android XMPP 即时通讯 包括服务器客户端
android的XMPP客户端
android xmpp 语音 图片 文本聊天 必须搭建xmpp服务器,暂时不能实现实时的语音,视频。 搭建好服务器后记得吧xmpptool类里面的ip改成你的电脑ip 登陆就ok了。
博客地址:http://blog.csdn.net/lnb333666/article/details/7599166
在Android使用XMPP详细解说
android xmpp chat 聊天程序
Android基于xmpp即时通讯软件,界面简洁大方,功能简单小巧,bug倒是不多不少。 编码方式是utf-8,不能直接导入eclipse,请自己新建一个工程,将源码覆盖过去,并将编码方式修改为utf-8。 了解更多,请移步:...
Android XMPP PUSH 推送源代码,客户端、服务端实现Android推送,服务端使用tomcat服务器
资源包括 基于XMPP的多方通信系统研究与实现.pdf 基于XMPP的P2P即时通信系统的研究及实现.kdh 基于SIMPLE和XMPP协议的移动IM研究.pdf XMPP研究与应用.pdf XMPP协议研究及其在IM系统群组通信...Android中的XMPP应用.pdf
一个结合文字、表情、语音、发送图片的例子,只需要改一下配置文件的ip地址,和服务器名;还有里面一个文件loginActivity里面我有个地方ip地址写死了,记得改一下;初学者一定要了解JID的格式;
android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能
android xmpp 推送。里面有文档图文介绍如何搭建服务器。以及网上找的两个android的小demo,感觉不是很完善,但是可以跑起来。。还有就是要用到的相关jar包
介绍AndroidPn项目实现推送的使用过程
基于asmack开发一个Android的客户端
android xmpp , xmpp客户端实现文件与文字通信,测试比较稳定;
实现 聊天 群组建立 群聊 约会 场景 切换
基于xmpp推送的服务器和android客户端源码,已调试通过,可以推送到手机客户端