Я знаю, что этот вопрос задавался раньше, но mschonaker здесь дал лишь частичный ответ. На моем веб-сайте пользователь может добавлять людей в свой список, затем партнер должен их принять, и, наконец, они подключаются. Первый человек (пользователь a) использует известный
roster.createEntry (jid, name, groups);
, который работает и добавляет запись в его список, но тогда я немного не понимаю, что делать:
как мне получить запрос на другом конце? Я попытался реализовать PacketListener, переопределить processPacket () и проверить пакет, типы которого являются Presence.Type.subscribe или Presence.Type.subscribed, но похоже, что он запускается только для пользователя a, но не для того, который должен прослушивать подписки - пользователь b.
, тогда у меня есть другая функция, которая может просматривать все запросы при входе в систему, поэтому, если я снова войду в систему, я увижу запрос, но как мне его принять? сначала я подумал, что пользователь b должен также добавить пользователя a в свой список,
roster.createEntry (jid, name, groups);
но это не сработало, и ничего не происходило. Я тоже пытался сделать
Presence subscribed = new Presence(Presence.Type.subscribed);
subscribed.setTo(jid);
xMPPConnection.sendPacket(subscribed);
, но тоже не вышло. Я уверен, что должен быть хороший и простой способ сделать это, но я пока нигде его не нашел, и попытки по одному за раз вызвали у меня слишком много головной боли. Кто-нибудь знает правильный поток для этого? заранее спасибо!