1
votes

In my chat application. I am using smack library , with the help of Subscription Management I have done the part of adding a friend to the Roster of a particular person.

Now I want that when some person denies the friend request, I send a UNSUBSCRIBE PACKET to the other user for the same, the friend is not deleted from the roster of the other user. It simply shows NONE subscription.

CODE:

Presence unsubscribe = new Presence(Presence.Type.unsubscribe);
                unsubscribe.setTo([email protected]);             
                connection.sendPacket(unsubscribe);

How can I delete the user from the Roster of the friend. I can do it from openfire portal but don't know how to do it from code.

2
Hi , have you found any solution? I too getting same issue. Please save me – Gangadhar Nimballi

2 Answers

5
votes

From the Smack forum, this code might work:

RosterPacket packet = new RosterPacket();
packet.setType(IQ.Type.SET);
RosterPacket.Item item  = new RosterPacket.Item("[email protected]", null);
item.setItemType(RosterPacket.ItemType.REMOVE);
packet.addRosterItem(item);
connection.sendPacket(packet);
2
votes

This code worked for me

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