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





All Articles