(能用得上话的话求点赞=-=,我表达不好的话跟我说哦)

上一次我们拿到了服务器端的组数据和用户信息,这就可以为我们日后使用好友系统打下基础了!

但是光是拿到了这些东西我们怎么能够满足呢?我们一个即时通讯软件最重要的不就是要能够通讯么!所以我们下一步就要接受别人发来的数据。
 public static void findMan(){
System.out.println("--------find start----------");
Roster roster = connect.con.getRoster();        //Roster表示一个用户的所有好友清单以及申请加好友的用户清单
Collection<RosterGroup> entriesGroup = roster.getGroups();//获得组信息
System.out.println("team:"+entriesGroup.size());     
for(RosterGroup group: entriesGroup){
Collection<RosterEntry> entries = group.getEntries();
System.out.println("--------groupName--------"+"\n"+group.getName());//循环打印组名和人名
for (RosterEntry entry : entries) {
System.out.println("name:"+entry.getName());
}
}
System.out.println("--------find end--------");
        ChatManager chatManager = connect.con.getChatManager();
         chatManager.addChatListener(new MyChatManagerListener());

注意到我们在上回的工具类的里面的findMan()函数里面添加了两行,这两行的功能就是注册了一个消息的监听器并把它设置为监听状态。但这个MyChatManagerListener()咱们还没有写哦!

 static class MyChatManagerListener implements ChatManagerListener {
public void chatCreated(Chat chat, boolean arg1) {
chat.addMessageListener(new MessageListener(){
@Override
public void processMessage(Chat chat, Message msg) {
android.os.Message m=handler.obtainMessage();
m.obj=msg;
m.sendToTarget();//送入handle
}
});
}
}

我们重写了MyChatManagerListener()实现一个ChatManageListener()的接口,在里面写一个聊天创建的函数添加监听,新建一个Message(这个Message是系统自带的)把接收收到的msg(这个Message并不是系统自带的)放进去传入Handle进行一些显示的操作。

    private static Handler handler = new Handler(){
public void handleMessage(android.os.Message m) {
Message msg=new Message();
msg=(Message) m.obj;
String[] message=new String[]{ msg.getFrom(), msg.getBody()};
System.out.println("==========收到消息 From:==========="+message[0].toString());
System.out.println("==========收到消息 say:===========" + message[1].toString());
}
};

当Message送入handle后在新建一个不是系统自带的Message把接到东西放去然后新建字符串数组,把第一个放入头(传入的用户名),第二个放入体(发送的用户信息)并且打印出来在日志中。

我们先用服务器来试一下,openfire有一个服务器发送消息的功能,我们发送“蛤蛤”好了!

于是我们就能在服务器里面看到这条服务器广播了!

openfire的官网里面还能找到这样的一个软件,也要下载安装,对于测试很有帮助,还有就是其实我们的开发就是在实现一个Spark的安卓版而已

我们在用这个来测试一下

效果就出来了,我们不但能接收服务器的广播,也能接受其他的

用户给我们发送的数据!

今天就写到这里了,在这里我们实现了如何接收其他人的发送数据,在下一个文章中我们要实现如何发送数据,这就是我们即时通讯的功能的初步实现了,好期待啊!

(能用得上话的话求点赞=-=,我表达不好的话跟我说哦)

openfire+asmack搭建的安卓即时通讯(三) 15.4.9的更多相关文章

  1. openfire+asmack搭建的安卓即时通讯(一) 15.4.7

    最进开始做一些android的项目,除了一个新闻客户端的搭建,还需要一个实现一个即时通讯的功能,参考了很多大神成型的实例,了解到operfire+asmack是搭建简易即时通讯比较方便,所以就写了这篇 ...

  2. openfire+asmack搭建的安卓即时通讯(七) 15.5.27

    本地化之章! 往期传送门: 1.http://www.cnblogs.com/lfk-dsk/p/4398943.html 2.http://www.cnblogs.com/lfk-dsk/p/441 ...

  3. openfire+asmack搭建的安卓即时通讯(四) 15.4.10

    之前的教程不知道你们成功了没,,,没成功可以问我啊=-= 第四篇博文是要实现发送消息的功能. 首先在我们登陆后的活动的layout里添加这样的两个控件,一个EditText和一个Button用于发送数 ...

  4. openfire+asmack搭建的安卓即时通讯(二) 15.4.9

    上期没有放成果图呢!忘了=-=,这就是上次的成果图,textview里面会显示登陆的名字(这个是默认管理员帐号=-=) 好吧,登陆了服务器我们就有了交互的功能啦可以说是前进了一大步呢!下面能我们就要试 ...

  5. openfire+asmack搭建的安卓即时通讯(六) 15.4.16

    啊啊啊啊啊啊啊啊,这东西越做越觉得是个深坑啊! 1.SharedPreferences.Editor的密码保存和自动登录: 首先还是从主界面开始,因为要提升一下用户体验自然要加入保存密码和自动登录的功 ...

  6. openfire+asmack搭建的安卓即时通讯(五) 15.4.12

    这一篇博客其实是要昨天写的,但昨天做了作修改就停不下来了,这次的修改应该是前期开发的最终回了,其余的功能有空再做了,下周可能要做一些好玩的东西,敬请期待! 1.修改下Logo:(Just We) ht ...

  7. Openfire XMPP Smack RTC IM 即时通讯 聊天 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. XMPP(三)-安卓即时通讯客户端

    由于时间原因,所以更新比较慢 ,还请大家谅解,此次是对上篇文章中的安卓客户端初级版本进行的一次更新优化,在这次更新后,就有那么一点样子了,可以拿的出手了,呵呵,还在关注的同学也可以及时下载更新.此次主 ...

  9. 急急如律令!火速搭建一个C#即时通信系统!(附源码分享——高度可移植!)

    (2016年3月更:由于后来了解到GGTalk开源即时通讯系统,因此直接采用了该资源用于项目开发,在此对作者表示由衷的感谢!) —————————————————————————————————— 人 ...

随机推荐

  1. j2ee分布式缓存同步实现方案dlcache v1.0.0

    现成的分布式K/V缓存已经有很多的实现,最主要的比如redis,memcached,couchbase.那为什么我们还要自己去实现呢,在我们解决了分布式系统下大量rpc调用导致的高延时后,我们发现很多 ...

  2. 为什么不推崇复杂的ORM

    上一篇文章写完,回复的人很多,有的说的很中肯,有的貌似只是看到文章的标题就进来写评论的!还有人问为什么我要屏蔽掉[反对]按钮,因为谁写文章都是为了分享,都在说出自己的心得体会.不过由于大家遇到的项目, ...

  3. 帝吧出征FB:这李毅吧的“爆吧”文化是如何形成的

    声明:本文不对爆吧行为及其涉及的事件进行是非判断,只探讨帝吧文化本身,欢迎拍砖.更正和补充. 一.“帝吧FB出征”事件梳理 继上次全网集体骂 “薯片”事件后,昨日(1月20日)晚7点,又发生了一次互联 ...

  4. 使用sublime text 2 版本至今我所遇到的问题及解决方法

    1.汉化:下载汉化包 .打开程序Preference下的浏览包文件夹.将解压的程序包粘贴进包文件夹2.破解:标题栏上面有带(unregistered)表示还没有注册: 打开HELP→Enter lic ...

  5. Microsoft Dynamics CRM 2013 --针对特定实体,取消保存功能(包含自动保存)

    AutoSave 是 Microsoft Dynamics CRM 2013 一个新特性. 但AutoSave的有效范围是[所有实体],不允许针对特定某一实体进行设置. 所以,若想针对特定实体进行设置 ...

  6. Android ListView用EditText实现搜索功能

    前言 最近在开发一个IM项目的时候有一个需求就是,好友搜索功能.即在EditText中输入好友名字,ListView列表中动态展示刷选的好友列表.我把这个功能抽取出来了,先贴一下效果图: 分析 在查阅 ...

  7. 【原】就IOS发布app时如何保护文本资源的一个方法

    近期的一个app是本地的,数据源来自于本地的一个.json文件,里面的数据是这个app的灵魂.近期快发布该app了,很担心发布后的.ipa包被竞争者解开然后信息发生泄漏.我的处理策略是:打包的时候放的 ...

  8. iOS之UI--通讯录的实例关键知识技术点积累

    通讯录的实例关键知识技术点积累 效果展示: 作为博文笔记,既然是笔记,目的是为了能够以后做这个项目能够快速上手,如果这是我下一次阅览这个博文笔记,那么我应该先空手从零开始做,需求也就是这个项目的展示效 ...

  9. C++ STL 迭代器失效问题

    之前看<C++ Primier>的时候,也解到在顺序型窗口里insert/erase会涉及到迭代器失效的问题,并没有深究.今天写程序的时候遇到了这个问题. 1 莫名其妙的Erase 最初我 ...

  10. PHPExcel中open_basedir restriction in effect的解决方法

    用PHPExcel做导出execl的时候发现在本地没有问题,但是把网站传到租用的服务器的时候就报错,具体如下: Warning: realpath() [function.realpath]: ope ...