2015-01-19 2 views
1

내가 기록 메시지 얻기 위해 다음 절을 사용하여 반환메시지 기록 요청은 빈 결과

<iq type='get' id='user1'> 
    <list xmlns='urn:xmpp:archive' 
     with='[email protected]'> 
    <set xmlns='http://jabber.org/protocol/rsm'> 
     <max>30</max> 
    </set> 
    </list> 
</iq> 

을 그리고 응답은 다음과 같습니다

<iq id="user1" to="[email protected]/Smack" type="result"></iq> 

나는에있는 두 개의 사용자간에 메시지를 볼 수 있지만 Openfire 관리 콘솔 .. 나는 모니터링 서비스를 사용한다.

고마워.

답변

0

이 솔루션은 같은 .. 자신의 공급자를 만들 것입니다 :

public class HistoryIQProvider implements IQProvider { 
public static final String NAMESPACE = "urn:xmpp:archive"; 
public static final String ELEMENT_NAME = "list"; 
public static final String CHAT = "chat"; 
public static final String START_TIME = "start"; 

private ArrayList<String> startTimes = new ArrayList<String>(); 

@Override 
public IQ parseIQ(XmlPullParser parser) throws Exception { 
    boolean stop = false; 
    String name = parser.getName(); 
    Log.d("Parse", "Name: " + name); 

    while(false == stop) 
    { 
     switch (parser.getEventType()) 
     { 
      case XmlPullParser.START_TAG: 
      { 
       if(ELEMENT_NAME.equals(name)) { 

        /*** START_TAG = 2 
        *** END_TAG = 3 
        ***/ 

        while (parser.nextTag() == XmlPullParser.START_TAG) { 
         /*** Stop when chats is finished.. ***/ 
         if(parser.getName().equals("set")) { 
          break; 
         } 
         String startTime = parser.getAttributeValue(1); 
         startTimes.add(startTime); 
         parser.nextTag(); 
        } 
       } 
      } 
      case XmlPullParser.END_TAG: 
      { 
       stop = ELEMENT_NAME.equals(name); 
       break; 
      } 
     } 
    } 

    name = null; 
    HistoryIQ historyIQ = new HistoryIQ(startTimes); 
    return historyIQ; 
} 
} 

HistoryIQ :

public class HistoryIQ extends IQ { 
private ArrayList<String> startTimes = new ArrayList<String>(); 

public HistoryIQ(ArrayList<String> l) { 
    startTimes = l; 
} 

@Override 
public String getChildElementXML() { 
    return null; 
} 

public ArrayList<String> getHistory_Chats() { 
    Log.d("Parse", "Lists : " + startTimes.size()); 
    return startTimes; 
} 
}