Reputation: 854
I am a beginner in smack api , and I have already wasted 1 day experimenting with it and understanding it .Please be kind
the below method is not getting invoked :
@Override
public void processMessage(Chat chat, Message message) {
Log.d("processMessage234:", "Getting Message here");
}
below is my full java code:
public class Activity2 extends AppCompatActivity implements ChatManagerListener,ChatMessageListener,PacketListener {
MyXmpp2 myXmpp2;
Button isOnline;
AbstractXMPPConnection connection;
ChatManager chatManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
isOnline = (Button) findViewById(R.id.button6);
myXmpp2 = new MyXmpp2();
}
@Override
protected void onResume() {
super.onResume();
isOnline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
connection = myXmpp2.getConnection();
Log.d("isOnline:", myXmpp2.getConnection().isConnected() + "");
chatManager = ChatManager.getInstanceFor(connection);
Chat c = chatManager.createChat("baba@abc", new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
Log.d("processMessage000:", "Getting Message here");
}
});
try {
c.sendMessage("lol");
//This is working fine
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
}
});
}
@Override
public void chatCreated(Chat chat, boolean createdLocally) {
if (!createdLocally) {
chat.addMessageListener(new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
Log.d("processMessage:", "Getting Message here");
}
});
}
}
@Override
public void processMessage(Chat chat, Message message) {
Log.d("processMessage234:", "Getting Message here");
//This is not getting invoked
}
@Override
public void processPacket(Stanza packet) throws SmackException.NotConnectedException {
Log.d("processPacket:", "Getting Packets here");
}
}
I can read in the log the packets packets sent and packets received as below:
D/SMACK: SENT (0): <message to='baba@abc ......
D/SMACK: SENT (0): <message from='baba@abc ......
But i am unable to invoke the method
void processMessage(Chat chat, Message message){..... }
Any Suggestion is very helpful :)
Upvotes: 1
Views: 310
Reputation: 91
@Override
public void processMessage(Chat chat, Message message) {
Log.d("processMessage234:", "Getting Message here");
}
I don't understand well what are you trying to do but it isn't invoked because it need to be invoked in ChatMessageListener
. It need to work on different thread than the whole app, due to constant listening
.
Here you are running new thread, so it should work and should listening to the incoming messages.
chat.addMessageListener(new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
Log.d("processMessage:", "Getting Message here");
}
});
Please explain more, I will try to help!
Upvotes: 1
Reputation: 854
Thanks Mack94 for saving my day, I am uploading my full code to help others
public class Activity2 extends AppCompatActivity {
MyXmpp2 myXmpp2;
Button isOnline;
AbstractXMPPConnection connection;
ChatManager chatManager;
ChatManagerListener chatManagerListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
isOnline = (Button) findViewById(R.id.button6);
myXmpp2 = new MyXmpp2();
}
@Override
protected void onResume() {
super.onResume();
isOnline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
connection = myXmpp2.getConnection();
Log.d("isOnline:", myXmpp2.getConnection().isConnected() + "");
chatManager = ChatManager.getInstanceFor(connection);
chatManager.addChatListener(chatManagerListener);
});
chatManagerListener = new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean createdLocally) {
chat.addMessageListener(new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
Log.d("Hello::","World");
if(message.getBody()!=null)
{
Log.d("Message::",message.getBody());
}
}
});
}
};
}
}
Upvotes: 3