HardBirch

agsXMPP客户端关于好友在线状态的设置及其响应的方法

时间:10-01-23 栏目:安卓入门与提高 作者:张飞不张,文采横飞 评论:2 点击: 2,466 次

      agsXMPP越来越多人用,最近有几个网友都问起如何在agsXMPP的客户端处理好友在线状态的设置以及响应。

agsXMPP里面有2个重要的地方可以设置在线状态:

1.PresenceType.available和PresenceType.unavailable,XMPP官方不推荐使用PresenceType.unavailable来实现隐身,为什么?A用户给B用户(或者所有用户)发送PresenceType.unavailable,那就相当于下线了,根本不能识别是“隐身”还是“下线”,有些偏门的工具喜欢把隐身的用户给显示出来。。。。。。。所以,那就不建议用PresenceType.unavailable咯。

2.ShowType.XXXXX,这个就不用多说了,其本身就是设置多种在线状态的。。。。


下面的代码实现了如何告诉特定好友(用循环就可以多个好友了),自己的在线状态:


























 


下面的代码就实现了如何响应好友发送过来的在线状态:




















}
else //处理好友上线/离线的事件处理
{
if (pres.From.Bare.Equals(Cls_Config.XmppCon.MyJID.Bare) == false)//如果不是自己的信息,即好友信息
{
//检测该好友是否不存在于好友列表(OnPresence比OnRosterItem优先处理添加好友),则自动添加ListItem
if (Cls_Config.alFriendsList.IndexOf(pres.From.Bare) == -1)
{
//添加到好友列表
}
//判断该好友目前的状态,上线还是离线
if (pres.Type == PresenceType.available && pres.Show==ShowType.chat)//如果好友上线,并且是chat状态
{}
else if(pres.Type == PresenceType.available && pres.Show==ShowType.away)//如果好友上线,并且是away状态
{}
else if (pres.Type == PresenceType.unavailable)//如果好友离线
{}
}
}
}  

这两句是判断的关键:            

 

if (pres.Type == PresenceType.available && pres.Show==ShowType.chat)//如果好友上线,并且是chat状态

{}

else if(pres.Type == PresenceType.available && pres.Show==ShowType.away)//如果好友上线,并且是away状态

{}

 

agsXMPP客户端关于好友在线状态的设置及其响应的方法:目前有2 条留言

  1. 板凳
    Tmacgrady1111:

    [e01]

    2010-01-25 10:13 [回复]
  2. 沙发
    匿名用户:

    [e01]

    2010-01-27 10:58 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐