The solution is to write your own PacketExtensionProvider. There is bug in ***PacketParserUtil#parsePacketExtension(String elementName, String namespace, XmlPullParser parser)***, for which, probably, you need to have your own provider.
Here is what i have written
ProviderManager manager = ProviderManager.getInstance();
manager.addExtensionProvider(, , new PacketExtensionProvider() {
*** @Override***
*** public PacketExtension parseExtension(XmlPullParser parser)***
*** throws Exception {***
*** DefaultPacketExtension extension = new DefaultPacketExtension(***, ***);***
*** boolean done = false;***
*** int eventType = parser.getEventType();***
*** while (!done) {***
*** System.out.println(parser.getText());***
*** if (eventType == XmlPullParser.START_TAG) {***
*** String name = parser.getName();***
*** // If an empty element, set the value with the empty string.***
*** if (parser.isEmptyElementTag()) {***
*** extension.setValue(name,"");***
*** }***
*** // Otherwise, get the the element text.***
*** else {***
*** eventType = parser.next();***
*** System.out.println(parser.getName());***
*** if (eventType == XmlPullParser.TEXT) {***
*** String value = parser.getText();***
*** extension.setValue(name, value);***
*** done=true;***
*** }***
*** }***
*** }***
*** eventType = parser.next();***
*** }***
*** return extension;***
*** }***
});
The idea is to read the data from instance of XMLPullParser and extract what you need and put it in DefaultPacketExtension instance.
Your MessageListener should look something like this
@Override
public void processMessage(Chat chat, Message message) {
*** if (message.getType() == Type.error) {***
*** System.out.println(“error message :” + message.getBody());***
******* } else if (message.getType() == Type.normal) {***
*** DefaultPacketExtension extension = (DefaultPacketExtension) message.getExtension(, );***
*** String msg = extension.getValue();***
*** System.out.println(msg);***
*** }***
}
Since you had put data in DefaultPacketExtension, you will not find data in message.getBody() but instead in meesage.getExtension()
Hope this is clear