1

在我的聊天应用程序中。我正在使用 smack 库,在订阅管理的帮助下,我完成了将朋友添加到特定人的名册的部分。

现在我希望当有人拒绝朋友请求时,我向其他用户发送一个 UNSUBSCRIBE PACKET 相同的,朋友不会从其他用户的名册中删除。它只是显示 NONE 订阅。

代码:

Presence unsubscribe = new Presence(Presence.Type.unsubscribe);
                unsubscribe.setTo(ABC@ABC.COM);             
                connection.sendPacket(unsubscribe);

如何从朋友的名册中删除用户。我可以从 openfire 门户网站做到这一点,但不知道如何通过代码做到这一点。

4

2 回答 2

5

Smack 论坛上,此代码可能有效:

RosterPacket packet = new RosterPacket();
packet.setType(IQ.Type.SET);
RosterPacket.Item item  = new RosterPacket.Item("ABC@ABC.COM", null);
item.setItemType(RosterPacket.ItemType.REMOVE);
packet.addRosterItem(item);
connection.sendPacket(packet);
于 2013-01-16T18:25:33.227 回答
2

这段代码对我有用

    if(selectedRoster != null) {
        Presence presence = new Presence(Presence.Type.unsubscribe);
        presence.setTo(selectedRoster.getUser());
        presence.setStatus("Offline");
        presence.setShow("unavailable");
        ConnectionController.GetInstance(this).getXMPPConnection().sendPacket(presence);

        try {
            roster.removeEntry(selectedRoster);
        } catch (XMPPException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
于 2014-08-22T06:43:28.227 回答