这节到重点了,看看发送消息的实现,代码写的很简单,主要为了演示功能的实现,
废话不说了。
在登陆以后应该建立一个监听消息的监听器,用来监听收到的消息:
这里收到消息后,通过广播将消息发送到需要的地方,比如聊天的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(); } }); }
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