Android基于XMPP Smack Openfire开发IM(5)发送消息
来源:互联网 发布:生意参谋数据下载 编辑:程序博客网 时间:2024/06/07 06:46
这节到重点了,看看发送消息的实现,代码写的很简单,主要为了演示功能的实现,
废话不说了。
在登陆以后应该建立一个监听消息的监听器,用来监听收到的消息:
这里收到消息后,通过广播将消息发送到需要的地方,比如聊天的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
- Android基于XMPP Smack Openfire开发IM(5)发送消息
- Android基于XMPP Smack Openfire开发IM(5)发送消息
- Android基于XMPP Smack Openfire开发IM(5)发送消息
- Android基于XMPP Smack Openfire开发IM【三】客户端接收服务器发送的消息
- Android基于XMPP Smack Openfire开发IM【三】客户端接收服务器发送的消息
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- Android基于XMPP Smack Openfire下学习开发IM
- Android基于XMPP Smack Openfire开发IM(1)搭建openfire服务器
- Android基于XMPP Smack Openfire开发IM(2)登录openfire
- Android基于XMPP Smack Openfire开发IM(2)登录openfire
- java经典算法_024一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
- jdbc连接池
- 【Boost】date构造方法
- 将浮点数表示的币值转换为人民币大写格式<Java实现>
- 页面跳转的方法
- Android基于XMPP Smack Openfire开发IM(5)发送消息
- Java编程中异常处理的优劣之道
- HDU 1203 强化01背包
- command对象的ExecuteScalar()方法、EexcuteReader()方法
- AOP 面向方面编程
- 网站URL路径的中文问题
- sed小技巧
- 指针和引用的联系与区别
- 构建eLua