多用户聊天中的“ 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] 删除。
我来说两句