Как получить заархивированные сообщения в smack xmpp? - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь восстановить заархивированные сообщения из чата, но у меня есть проблемы с этим

Я пытаюсь восстановить заархивированные сообщения из чата, но у меня есть проблемы с этим. Я использую smack 4.2.0 с openfire.

для извлечения заархивированных сообщений. Я использую следующее

public void getMessages(){
        try {

            MamManager mamManager = MamManager.getInstanceFor(mConnection);
            boolean isSupported = mamManager.isSupportedByServer(); //this is False
            if (isSupported) {
                MamManager.MamQueryResult mamQueryResult = mamManager.queryArchive(500);
                List<Forwarded> forwardedMessages = mamQueryResult.forwardedMessages;
                Forwarded d = forwardedMessages.get(0);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

с предыдущим кодом. У меня проблемы, поскольку isSupported всегда ложно .. почему это ложно? Что я делаю, чтобы сделать это правдой и позволить мне запомнить сообщения?

Я также использовал следующий код:

public MamManager.MamQueryResult getArchivedMessages(String jid, int maxResults) {

        MamManager mamManager = MamManager.getInstanceFor(mConnection);
        try {
            DataForm form = new DataForm(DataForm.Type.submit);
            FormField field = new FormField(FormField.FORM_TYPE);
            field.setType(FormField.Type.hidden);
            field.addValue(MamElements.NAMESPACE);
            form.addField(field);

            FormField formField = new FormField("with");
            formField.addValue(jid);
            form.addField(formField);

            // "" empty string for before
            RSMSet rsmSet = new RSMSet(maxResults, "", RSMSet.PageDirection.before);
            MamManager.MamQueryResult mamQueryResult = mamManager.page(form, rsmSet);
            Log.d("testr", mamQueryResult.toString());
            return mamQueryResult;

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

это тоже не работает

Как я могу получить заархивированные сообщения?

...