在Xmpp / Openfire中从名册中删除朋友

时间:2013-01-14 11:26:07

标签: android xmpp openfire

在我的聊天应用程序中。我正在使用smack库,在Subscription Management的帮助下,我已经完成了将朋友添加到特定人员名单中的部分。

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

CODE:

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

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

2 个答案:

答案 0 :(得分:5)

Smack forum开始,此代码可能有效:

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);

答案 1 :(得分:1)

这段代码对我有用

    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();
        }
    }