I am using Smack 4.1.3 and Openfire. I can use addAsyncStanzaListener to receive Message (below).
// Add a packet listener to get messages sent to us
StanzaFilter filter = new StanzaTypeFilter(Message.class);
connection.addAsyncStanzaListener(new StanzaListener() {
@Override
public void processPacket(Stanza packet) {
Message message = (Message) packet;
if (message.getBody() != null) {
//String fromName = StringUtils.parseBareAddress(message.getFrom());
String fromName = message.getFrom();
Log.i("XMPPChatDemoActivity ", " Text Recieved " + message.getBody() + " from " + fromName);
}
}
}, filter);
After reading examples, most of them are using ChatManager. My questions are
1. Is it a better way to use ChatManager to manager chat and sending/receiving messages?
2. In most example, a createChat with a target username is being used. If I am not the one who initiates the message, I don't have any username can be passed to the createChat method. Can you show me the code for ChatManager listening to new incoming messages (that are not initiated by me).
Chat chat = ChatManager.getInstanceFor(connection).createChat("jsmith@jivesoftware.com", new MessageListener(){
public void processMessage(Chat chat, Message message){
System.out.println("Received message: " + message);
}
});
chat.sendMessage("Hello");
Thank you!