Я еще не пробовал, но я думаю, что ниже должно работать. При использовании ручного режима должен быть зарегистрирован PacketListener, который прослушивает пакеты присутствия типа Presence.Type.subscribe
.
Сначала установите список:
Roster roster = connection.getRoster();
roster.setSubscriptionMode(Roster.SubscriptionMode.manual);
Затем добавьте список пакетов в указанное выше соединение, например:
connection.addPacketListener(new SubscriptionListener(), new PacketFilter(){
public boolean accept(Packet packet) {
if(packet instanceof Presence)
if(((Presence)packet).getType().equals(Presence.Type.subscribe))
return true;
return false;
}});
Приведенный выше код просто возвращает true для всех запросов, но вы можете настроить его, т. Е. Установить его в true или false в зависимости от ввода пользовательского интерфейса.