如何在android中读取xmpp消息标签的自定义属性?
Posted
技术标签:
【中文标题】如何在android中读取xmpp消息标签的自定义属性?【英文标题】:How to read custom attributes of xmpp message tag in android? 【发布时间】:2014-10-22 20:20:20 【问题描述】:我需要接收的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。并且数据包的实例也是消息的实例,它说,不能将数据包转换为消息。请指导我如何收到我想要的数据包。
【问题讨论】:
【参考方案1】:你不能。此外,您永远不应该扩展 Message
或 Presence
类。
永远不要向指定的流元素属性添加自定义值(例如,消息的 type 属性的新值),并且永远不要向***元素添加新属性(就像你对 msgType
、msgTimeStamp
和等等)。
这有可能破坏事物!不要这样做。另见"XEP-0134: XMPP Design Guidelines § 2.1 XMPP is Sacred"。这就是为什么在 Smack 中不可能。相反,使用自定义扩展元素,就像他的示例中显示的 xnyhps(data
元素)。另请参阅 "RFC 6120 § 8.4 Extended Content" 在 Smack 中称为 PacketExtension。
另请参阅this answer 和问题。
【讨论】:
以上是关于如何在android中读取xmpp消息标签的自定义属性?的主要内容,如果未能解决你的问题,请参考以下文章
我们如何在 smack 或来自 android 的 xmpp 中获得对发件人的消息读取/看到确认