我是android中的xmpp/asmack新手。
有没有人可以帮我找到用户的朋友(花名册)
我使用的是:
Presence availability = roster.getPresence(user);
Mode userMode = availability.getMode();
我还应该做些什么来获取我的花名册中列出的每个用户的可用性状态。
发布于 2013-01-22 14:55:43
只需像这样使用:
Presence availability = roster.getPresence(user);
Mode userMode = availability.getMode();
retrieveState_mode(availability.getMode(),availability.isAvailable());
public static int retrieveState_mode(Mode userMode, boolean isOnline) {
int userState = 0;
/** 0 for offline, 1 for online, 2 for away,3 for busy*/
if(userMode == Mode.dnd) {
userState = 3;
} else if (userMode == Mode.away || userMode == Mode.xa) {
userState = 2;
} else if (isOnline) {
userState = 1;
}
return userState;
}
如果您有任何关于xmpp/asmack的问题,请告诉我
发布于 2013-01-22 15:02:18
像这样使用
userFromServer = con.getRoster().getPresence(userID);
userState = retrieveState(userFromServer.getMode(), userFromServer.isAvailable());
public int retrieveState(Mode userMode, boolean isOnline) {
int userState = XmppFriend.OFFLINE; // default return value
if (userMode == Mode.dnd) {
userState = XmppFriend.BUSY;
} else if (userMode == Mode.away || userMode == Mode.xa) {
userState = XmppFriend.AWAY;
} else if (isOnline) {
userState = XmppFriend.ONLINE;
}
return userState;
}
发布于 2013-08-09 19:59:22
roster.addRosterListener(new RosterListener() {
public void entriesAdded(Collection<String> param) {}
public void entriesDeleted(Collection<String> addresses) {
}
public void entriesUpdated(Collection<String> addresses) {
}
public void presenceChanged(Presence presence) {
String user = presence.getFrom();
Presence bestPresence = roster.getPresence(user);
Log.d(TAG, "BestPresence: " + user + ": " + bestPresence);
String[] temp = presence.getFrom().split("\\@");
Log.d(TAG, "Presence: " + temp[0] + "-" + presence.toString());
String status = presence.toString();
// ShowInfoDialog(temp[0]+"is "+status);
for (int i = 0; i < friendslist.size(); i++) {
if (temp[0].equalsIgnoreCase(friendslist.get(i).getName())) {
friendslist.get(i).setStatus(status);
Log.d(TAG, "kilepet/belepet " + friendslist.get(i).getName() + " - " + friendslist.get(i).getStatus());
// ShowInfoDialog(friendslist.get(i).getName()+"is "+status);
Log.d(TAG, "WATERFAK");
}
}
}
如果你使用RosterListener,它会实时更新状态,对我来说效果很好。
https://stackoverflow.com/questions/14453089
复制相似问题