SendBroadcast when message is received with smack
I am trying to use the smack API for my chat application. What has been done so far:
My service for listening to incoming messages:
chatmanager.addChatListener(
new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean createdLocally) {
if (!createdLocally)
chat.addMessageListener(myMessageListener);
}
});
class MyMessageListener implements ChatMessageListener {
@Override
public void processMessage(Chat chat, Message message) {
String body = message.getBody();
if (body != null && !body.isEmpty()) {
Intent intent = new Intent();
intent.setAction(MY_ACTION);
intent.putExtra("message", body);
sendBroadcast(intent);
}
}
}
My receiver class:
public class MessageReceiver extends BroadcastReceiver
{
private ChatArrayAdapter chatArrayAdapter;
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra("message");
Log.d("receiveddddd", message);
chatArrayAdapter.add(new ChatMessage(true,message));
chatArrayAdapter.notifyDataSetChanged();
}
}
My activity used to register the recipient:
protected void onResume() {
messageReceiver = new MessageReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(XMPPService.MY_ACTION);
registerReceiver(messageReceiver, intentFilter);
super.onResume();
}
This is how I send a message using my android app:
//listener is the object of MyMessageListener class
Chat chat = chatmanager.createChat("username@" + SERVICE,listener);
try {
chat.sendMessage(messageBody);
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
I am using Pidgin as my second client.
Problem:
1) When I start chat from pidgin. I can receive and send successfully, but I was unable to receive messages when I started communicating with my Android app in Pidgin. I am getting this error when receiving messages:
Exception in packet listener
java.lang.NullPointerException
at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:312)
at fbcrush.fbcrush.XMPPClientSmack.XMPPService$MyMessageListener.processMessage(XMPPService.java:72)
at org.jivesoftware.smack.chat.Chat.deliver(Chat.java:180)
Line number 72 is sendBroadcast (intent) in my class MyMessageListener
+3
source to share
No one has answered this question yet
Check out similar questions: