这节到重点了,看看发送消息的实现,代码写的很简单,主要为了演示功能的实现,


废话不说了。

在登陆以后应该建立一个监听消息的监听器,用来监听收到的消息:

这里收到消息后,通过广播将消息发送到需要的地方,比如聊天的activity,当然不一定用广播,

private Handler handler = new Handler(){public void handleMessage(android.os.Message m) {Message msg=new Message();msg=(Message) m.obj;//把从服务器获得的消息通过广播发送Intent intent = new Intent("org.yhn.mes");String[] message=new String[]{msg.getFrom(),msg.getBody()};intent.putExtra("message", message);MainActivity.this.sendBroadcast(intent);};};/** message listener*/class MyChatManagerListener implements ChatManagerListener {public void chatCreated(Chat chat, boolean arg1) {chat.addMessageListener(new MessageListener(){public void processMessage(Chat arg0, Message msg) {/**通过handler转发消息*/android.os.Message m=handler.obtainMessage();m.obj=msg;m.sendToTarget();}});}

这样就可以收到消息了,可以再openfire服务器端,给所有在线的用户发送一个消息,测试下,这里就不贴图了,


smack中有chat和ChatManager类,可以方便的创建和管理会话,

比如在打开一个好友的聊天窗口时,创建一个和该好友通信的chat


public class ChatActivity extends Activity {String account;String chatNick;public static String chatContents;TextView chatTextView; public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_chat);        /** 设置top面板信息*/        chatNick=getIntent().getStringExtra("nick");        account=getIntent().getStringExtra("account");        TextView nick_tv=(TextView) findViewById(R.id.chat_top_nick);nick_tv.setText(chatNick);Button send_btn=(Button) findViewById(R.id.chat_btn_send);send_btn.setOnClickListener(new OnClickListener(){public void onClick(View arg0) {EditText input=(EditText) findViewById(R.id.chat_input);String content=input.getText().toString();try {ChatManager cm = ConnUtil.getConnection().getChatManager();Chat chat=cm.createChat(account, new MessageListener(){public void processMessage(Chat arg0, Message msg) {Log.i("---", msg.getFrom()+"说:"+msg.getBody());//添加消息到聊天窗口}});Message m=new Message();m.setBody(content);chat.sendMessage(m);} catch (XMPPException e) {e.printStackTrace();}}}); }}

在上边的代码中通过

Message m=new Message();m.setBody(content);chat.sendMessage(m);
发送消息,

有了chat做什么都方便啦

测试可以用spark,

下面看效果图:




PS:图片显示不完整可在新窗口中查看,或者调整博客配置,嘿嘿。



转载请注明出处:http://blog.csdn.net/Vestigge


更多相关文章

  1. Android中桌面图标显示通知消息的数量
  2. 使用Django搭建android后台(登录模块)
  3. Android学习笔记(38):Handler消息传递处理机制
  4. Android:异步处理之Handler、Looper、MessageQueue之间的恩怨(三)
  5. 服务器主动向android手机端推送消息---------Linux下实现
  6. Android有四大组件
  7. Android之消息处理机制(二)Handler的本质-Message和Looper到底是什
  8. Android消息机制源码解读
  9. Android(安卓)Studio 4.0 New Class 窗口自定义修改

随机推荐

  1. Android(安卓)使用 Usb Accessory 模式与
  2. 一个Android应用的汉化的技术
  3. android 调用系统相册选取照片或者打开相
  4. Android(安卓)事件传递流程 - 基于WMS、I
  5. Android(安卓)Loader 机制浅谈
  6. android 获取MP4文件的图片大小
  7. Android中style和theme巧用:Android应用
  8. android 多表管理查询
  9. 为Android安装BusyBox —— 完整的bash s
  10. 2011的个人总结