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(PrivacyRule.JID, true, 1);
item.setValue(user);
privacyItems.add(item);
item = new PrivacyItem(PrivacyRule.SUBSCRIPTION, true, 2);
item.setValue(PrivacyRule.SUBSCRIPTION_BOTH);
privacyItems.add(item);
item = new PrivacyItem(PrivacyRule.GROUP, false, 3);
item.setValue(groupName);
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, Arrays.asList(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