我正在使用 smack api 在 android 中开发聊天应用程序。我在离线状态下获取好友请求时遇到问题。我正在使用以下代码收到好友请求。
LoginScreen.connection.addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
final Presence newPresence = (Presence) packet;
final Presence.Type presenceType = newPresence.getType();
final String fromId = newPresence.getFrom();
final String toId = newPresence.getTo();
final RosterEntry newEntry = roster.getEntry(fromId);
final String name = fromId.substring(0, fromId.indexOf("@"));
if (presenceType == Presence.Type.subscribed) {
Log.i("test-chat", "#####SUBSCRIBED#########");
}
if (presenceType == Presence.Type.subscribe) {
//adding buddy request to local DB
}
}
}, new PacketFilter() {
public boolean accept(Packet packet) {
if (packet instanceof Presence) {
Presence presence = (Presence) packet;
if (presence.getType().equals(Presence.Type.subscribed)
|| presence.getType().equals(Presence.Type.subscribe)
|| presence.getType().equals(Presence.Type.unsubscribed)
|| presence.getType().equals(Presence.Type.unsubscribe)
|| presence.getType().equals(Presence.Type.available)
|| presence.getType().equals(Presence.Type.unavailable)) {
return true;
}
}
return false;
}
});
这在用户在线时工作正常。但是假设当用户离线时,另一个用户向该用户发送好友请求。当用户上线时,我无法收到好友请求,因为没有调用监听器。需要调用监听器,以获取在离线状态下收到的所有好友请求。
请帮忙。
最佳答案
您的代码没问题。这也发生在我身上。嗯,实际问题是您在收到请求后注册监听器。
尝试在登录用户之前注册监听器,您会看到即使您处于离线状态也会收到请求。
这样就可以真正解决问题了。试试这个,如果您仍然遇到任何问题...请详细说明您的情况。
希望这对您有所帮助。
关于android - 在离线状态下使用 smack android 获取好友请求的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23992097/