Java QuickBlox聊天消息侦听器

Java QuickBlox聊天消息侦听器,java,android,quickblox,Java,Android,Quickblox,我使用2.1.1安卓SDK,希望通知用户应用程序收到的新传入消息 问题就在这里。我想在用户启动应用程序时通知他,因此我想在“用户登录”阶段添加侦听器,如代码段所示: QBAuth.createSession(user, new QBEntityCallbackImpl<QBSession>() { @Override public void onSuccess(QBSession session, Bundle args) {

我使用2.1.1安卓SDK,希望通知用户应用程序收到的新传入消息

问题就在这里。我想在用户启动应用程序时通知他,因此我想在“用户登录”阶段添加侦听器,如代码段所示:

        QBAuth.createSession(user, new QBEntityCallbackImpl<QBSession>() {
        @Override
        public void onSuccess(QBSession session, Bundle args) {
            // login to Chat
            chatService.login(user, new QBEntityCallbackImpl() {
                @Override
                public void onSuccess() {
                    HERE I WOULD LIKE A CODE TO START LISTEN FOR ALL INCOMING MESSAGES
QBAuth.createSession(用户,新的QBEntityCallbackImpl(){
@凌驾
成功时公共无效(QBSession会话,捆绑参数){
//登录聊天
登录(用户,新的QBEntityCallbackImpl(){
@凌驾
成功时的公共无效(){
在这里,我希望有一个代码开始侦听所有传入的消息
依照 监听器需要聊天QBChat来启动。但我想监听所有的消息,而不仅仅是在特定的聊天中

长话短说,如何实现消息侦听器来捕获发送给登录用户的所有消息?

@Naveen Kumar

在我的启动活动中,我启动侦听器以捕获XMPP连接

    private void XMPPConnectionListener() {
    XMPPConnection.addConnectionCreationListener(new ConnectionCreationListener() {

        @Override
        public void connectionCreated(XMPPConnection connection) {
            GlobalVar.XMPPConn = connection;
            ChatHelper.idleMessageListener(StartActivity.this);

        }
    });

}
然后我使用GlobalVar.XMPPConn捕获数据包并解析它们:

    public static void idleMessageListener(final Activity activity) {
    PacketListener myListener = new PacketListener() {
        public void processPacket(final Packet packet) {
            final Integer userID = Integer.parseInt(returnIDFromPacket(packet.getFrom()));
            final String body = returnBodyFromPacket(packet.toString());
            if (!GlobalVar.currentOpponent.equals(userID) && !body.isEmpty()) {
                activity.runOnUiThread(new Runnable() {
                    public void run() {
                        QBUsers.getUser(userID, new QBEntityCallbackImpl<QBUser>() {
                            @Override
                            public void onSuccess(final QBUser user, Bundle args) {
                                sendNotification(activity, user, body);
                            }

                            @Override
                            public void onError(List<String> errors) {
                                Log.d(TAG, errors.toString());
                            }
                        });
                    }
                });

            }
        }
    };
    PacketFilter filter = new MessageTypeFilter(Message.Type.chat);

    if (GlobalVar.XMPPConn != null) {
        GlobalVar.XMPPConn.addPacketListener(myListener, filter);
    }
}
公共静态无效idleMessageListener(最终活动){
PacketListener myListener=新建PacketListener(){
公共无效处理数据包(最终数据包){
最终整数userID=Integer.parseInt(returnIDFromPacket(packet.getFrom());
最后一个字符串体=returnBodyFromPacket(packet.toString());
如果(!GlobalVar.currentOperator.equals(userID)和&!body.isEmpty()){
activity.runOnUiThread(新的Runnable(){
公开募捐{
getUser(userID,新的QBEntityCallbackImpl(){
@凌驾
成功时公共无效(最终QBUser用户,捆绑参数){
发送通知(活动、用户、主体);
}
@凌驾
公共无效onError(列表错误){
Log.d(标记,errors.toString());
}
});
}
});
}
}
};
PacketFilter=newmessagetypefilter(Message.Type.chat);
if(GlobalVar.XMPPConn!=null){
GlobalVar.XMPPConn.addPacketListener(myListener,filter);
}
}

因此,逻辑是捕获QuickBlox触发的连接,然后将一个数据包侦听器附加到该连接。

如果找到解决方案,请共享代码。您能详细解释一下代码吗?因为我不理解GlobalVar的含义,或者如何调用XMPPConnectionListener等,请详细解释代码。