基于openfire+smack开发Android即时聊天应用[三]-单人聊天、群聊、发送接收文件等
- 1、创建聊天窗口
/**
* 创建聊天窗口 格式:user@192.168.0.37 或者 user
*/
public void createChat() {
String jid = et.getText().toString().trim();
jid = jid + "@" + mConnection.getServiceName();
if (mConnection.isConnected()) {
ChatManager chatManager = ChatManager.getInstanceFor(mConnection);
Chat chat = chatManager.createChat(jid);
Log.e("createChat: ", "创建聊天成功");
}
}
- 2、获取聊天对象管理器
/**
* 获取聊天对象管理器
* @return
*/
public ChatManager getChatManager() {
if(isConnected()) {
ChatManager chatManager = ChatManager.getInstanceFor(connection);
return chatManager;
}
;
}
- 3、接收文本消息
//创建聊天对象管理器监听
private ChatManagerListener chatManagerListener = new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean createdLocally) {
chat.addMessageListener(new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
//接收到消息Message之后进行消息展示处理,这个地方可以处理所有人的消息
}
});
}
};
//设置聊天对象管理器处理监听
getChatManager().addChatListener(chatManagerListener);
上述代码会在你创建聊天对象时对该聊天对象设置消息处理监听,当接收到消息之后,会自动调用processMessage方法进行处理,我们可以在该方法中对接收到的消息进行展示或其他处理,所有好友发送过来的消息都会通过该方法处理。所以该监听最好在登陆之后进行设置,同时在断开连接或是注销时移除该监听。