如何在android中读取xmpp消息标签的自定义属性?

时间:2014-10-22 20:20:21

标签: android xmpp smack

我需要收到的xml是:

<message id="qm5Dx8" to="adsfxcv" type="chat"from="adsf"
 msgType="2"
 thumbnail="randomThumbnail"
 serverMediaURL="random"
 isFromMe="1"
 status="1"><body>Image</body><request xmlns='urn:xmpp:receipts'/></message>

消息由 MyCustomMessage extends Message 类发送。

在我的消息监听器中,我需要获取数据包的地方是:

            public void processPacket(Packet packet) {
            String recivedPacket = packet.toXML();
            try {
                if (packet instanceof MyCustomMessage) {
                    MyCustomMessage msg = (MyCustomMessage) packet;
                    ....

但是我只在消息标签中收到id,to,type和from。并且数据包的实例也是Message,它说,不能将数据包转换为消息。 PLZ指导我如何收到我想要的包裹。

1 个答案:

答案 0 :(得分:4)

你做不到。此外,您永远不应该延长MessagePresence类。

永远不要将自定义值添加到指定的流元素属性(例如,消息的type属性的新值),并且永远不要将新属性添加到顶级元素(就像您使用msgType所做的那样,{{ 1}}等等。

这有可能打破局面!不要这样做。另见"XEP-0134: XMPP Design Guidelines § 2.1 XMPP is Sacred"。这就是Smack无法实现的原因。相反,使用自定义扩展元素,如xnyhps在其示例中显示的(msgTimeStamp元素)。另请参阅"RFC 6120 § 8.4 Extended Content"这些在Smack中称为PacketExtension

另见this answer和问题。