多用户聊天中的“存在”侦听器

阿比舍克·贾(Abhishek Jha)

多用户聊天中的“ smack”状态侦听器未得到调用。使用Smack Api登录,然后添加了roster.addRosterListener(mRoasterListener); 但是当聊天室的其他用户的状态发生变化时,聆听没有成功。我尝试了以下代码来使状态侦听器正常工作:

connection.login(loginUser, passwordUser);

MultiUserChatManager manager = 

MultiUserChatManager.getInstanceFor(connection);

muc = manager.getMultiUserChat(roomID + "@" +context.getString(R.string.group_chat_id));

Log.d("Join User: ", "Already Created");

muc.join(Utilities.getUserPhoneNo(context));

muc.addMessageListener(mGroupMessageListener);

Roster roster = Roster.getInstanceFor(connection);//luna

roster.addRosterListener(mRoasterListener);//roasterListener

Log.d("Joined User Phone: ", " " + Utilities.getUserPhoneNo(context));

而这个班听存在改变...

public class RoasterListener implements RosterListener{
        public RoasterListener(Context context){

        }

        @Override
        public void entriesAdded(Collection<String> collection) {

        }

        @Override
        public void entriesUpdated(Collection<String> collection) {

        }

        @Override
        public void entriesDeleted(Collection<String> collection) {

        }

        @Override
        public void presenceChanged(Presence presence) {
            System.out.println("Presence changed: " + presence.getFrom() + " " + presence);
        }
    }

我尝试了许多stackoverflow可用的链接,但未获得任何成功。请帮忙!

先生

对于多用户聊天,您不必使用名册,因为结识在名册中没有的人是很正常的。

要知道谁在粘液中,首先要询问居住者:

muc.join(user,password);

List<String> occupantsAtJoinTime = muc.getOccupants();

                    for (String occupant : occupantsAtJoinTime)
                    {
                        System.out.println("occupant: "+occupant);
                        //actions
                    }

然后,要保持Occupants列表更新,请向您的muc注册一个DefaultParticipantStatusListener并定义该Listner:

muc.addParticipantStatusListener(new CustomParticipantStatusListner());

定义为(有多种方法可以实现):

    public class CustomParticipantStatusListner extends DefaultParticipantStatusListener 
    {

        public void joined(String participant) 
        {
            System.out.println(participant + "just joined MUC");
//actions (add occupantsRightNow)
        }

        public void left(String participant)
        {
            System.out.println(participant + " just left MUC");
//actions (remove occupantsRightNow)
        }
    }

所有这一切都带有点子4.1.7

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章