1

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(ABC@ABC.COM);             
                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.

Vicky
  • 12,934
  • 4
  • 46
  • 54
Gaurav Arora
  • 8,282
  • 21
  • 88
  • 143

2 Answers2

5

From the Smack forum, this code might work:

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);
Joe Hildebrand
  • 10,354
  • 2
  • 38
  • 48
2

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();
        }
    }
Muhammad Aamir Ali
  • 20,419
  • 10
  • 66
  • 57