Java 如何(如果可能)在不加入的情况下获取OpenFire GroupChat历史记录(SmackAPI)

Java 如何(如果可能)在不加入的情况下获取OpenFire GroupChat历史记录(SmackAPI),java,android,xmpp,openfire,smack,Java,Android,Xmpp,Openfire,Smack,我现在做的是: 1-检索所有GroupChat List<HostedRoom> rooms = multiUserChatManager.getHostedRooms(groupChatService.asDomainBareJid()); for (HostedRoom room : rooms) { if (room.getJid().getLocalpart().equals(groupC

我现在做的是:

1-检索所有GroupChat

        List<HostedRoom> rooms = multiUserChatManager.getHostedRooms(groupChatService.asDomainBareJid());
        for (HostedRoom room :
                rooms) {
            if (room.getJid().getLocalpart().equals(groupChatRoomId)){
                multiUserChat = multiUserChatManager.getMultiUserChat(room.getJid());
            }
        }
       if (multiUserChat != null) {
            if (!multiUserChat.isJoined()) {
                multiUserChat.join(connection.getUser().getResourcepart());
            }
        }
3-获取所有消息

  public List<Message> getOldMessages() {
    List<Message> oldMessages = new ArrayList<>();
    try {
        Message message = multiUserChat.nextMessage();

        while (message != null) {
            oldMessages.add(message);
            message = multiUserChat.nextMessage();
        }
    } catch (MultiUserChatException.MucNotJoinedException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    multiUserChat.addMessageListener(new MessageListener() {
        @Override
        public void processMessage(final Message message) {
            listener.notifyMessage(message.getSubject(), message.getBody());

        }
    });
    return oldMessages;
}
public List getOldMessages(){
List oldMessages=new ArrayList();
试一试{
Message Message=multiUserChat.nextMessage();
while(消息!=null){
旧消息。添加(消息);
message=multiUserChat.nextMessage();
}
}捕获(MultiUserChatException.MucNotJoinedException e){
e、 printStackTrace();
}捕捉(中断异常e){
e、 printStackTrace();
}
multiUserChat.addMessageListener(新MessageListener(){
@凌驾
public void processMessage(最终消息){
notifyMessage(message.getSubject(),message.getBody());
}
});
返回旧消息;
}
我需要在没有加入的情况下也这样做,并在GroupChat中为所有用户显示我的状态


换句话说,我的应用程序会向您显示您以前加入的GroupChat,我想为列表中的所有GroupChat实现错过消息通知。

因此我从您的问题中了解到:您不想执行XMPP登录并将状态设置为“可用”但是想获取群聊消息吗?@AnkurKhandelwal这是我代码的一部分,很抱歉这与问题无关。@ShoaibAhmadGondal我的应用程序向用户显示您以前加入的群聊列表,因此我想显示您丢失的消息。我希望您已经知道XMPP多用户聊天(XEP-0045),当用户脱机时,它不再被视为该房间的一部分。因此,在这种情况下,没有离线群组聊天信息。@ShoaibAhmadGondal是的,我当前的解决方案是加入群组聊天并检索所有历史信息,问题是,如果有一个解决方案可以在不加入每个GroupChat的情况下获取历史消息,那么我从您的问题中了解到的是:您不想执行XMPP登录并将状态设置为“可用”但是想获取群聊消息吗?@AnkurKhandelwal这是我代码的一部分,很抱歉这与问题无关。@ShoaibAhmadGondal我的应用程序向用户显示您以前加入的群聊列表,因此我想显示您丢失的消息。我希望您已经知道XMPP多用户聊天(XEP-0045),当用户脱机时,它不再被视为该房间的一部分。因此,在这种情况下,不存在脱机群组聊天消息。@ShoaibAhmadGondal是的,我当前的解决方案是加入群组聊天并检索所有历史记录消息,问题是,如果有一种解决方案可以在不加入每个群组聊天的情况下获取历史记录消息