What is?
Privacy is a method for users to block communications from particular other users. In XMPP this is done by managing one's privacy lists.
Server-side privacy lists enable successful completion of the following use cases:
How can I use it?
The API implementation releases three main public classes:
// Create a privacy manager for the current connection. PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection); // Retrieve server privacy lists PrivacyList[] lists = privacyManager.getPrivacyLists();
// Set the name of the list String listName = "newList"; // Create the list of PrivacyItem that will allow or deny some privacy aspect String user = "tybalt@example.com"; String groupName = "enemies"; ArrayList privacyItems = new ArrayList(); PrivacyItem item = new PrivacyItem(PrivacyItem.Type.jid, user, true, 1); privacyItems.add(item); item = new PrivacyItem(PrivacyItem.Type.subscription, PrivacyItem.SUBSCRIPTION_BOTH, true, 2); privacyItems.add(item); item = new PrivacyItem(PrivacyItem.Type.group, groupName, false, 3); item.setFilterMessage(true); privacyItems.add(item); // Get the privacy manager for the current connection. PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection); // Create the new list. privacyManager.createPrivacyList(listName, privacyItems);
// Set the name of the list String listName = "existingList"; // Get the privacy manager for the current connection. PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection); // Sent the new list to the server. privacyManager.updatePrivacyList(listName, items);
// Set the name of the list String listName = "existingList"; // Get the privacy manager for the current connection. PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection); // Remove the list. privacyManager.deletePrivacyList(listName);
// Get the privacy manager for the current connection. PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection); // Decline the use of the active list. privacyManager.declineActiveList();
// Get the privacy manager for the current connection. PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection); // Decline the use of the default list. privacyManager.declineDefaultList();
Listening for Privacy Changes
In order to handle privacy changes, clients SHOULD listen manager's updates.
When a list is changed the manager notifies every added listener. Listeners MUST implement the PrivacyListListener interface.
Clients may need to react when a privacy list is modified. The PrivacyListManager lets you add listerners that will be notified when a list has been changed. Listeners should implement the PrivacyListListener interface.
The most important notification is updatedPrivacyList that is performed when a privacy list changes its privacy items.
The listener becomes notified after performing:
// Get the privacy manager for the current connection. PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection); // Add the listener (this) to get notified privacyManager.addListener(this);
References