
DeliveryReceipt deliveryReceiptObj =(DeliveryReceipt) message.getExtension(DeliveryReceipt.NAMESPACE);// ID below is what you wantdeliveryReceiptObj.getId();
定义您的
EmbeddedPacketExtension
(这样您就可以对此进行处理,而不是DefaultPacketExtension
由SMACK提供)扩展的提供者
EmbeddedExtensionProvider
registerProvider
您刚刚使用命名空间创建的
代码如下:
import org.jivesoftware.smack.packet.PacketExtension;public class DeliveryReceipt implements PacketExtension{ public static final String NAMESPACE = "urn:xmpp:receipts"; private String id; /// original ID of the delivered message public DeliveryReceipt(String id) { this.id = id; } public String getId() { return id; } public String getElementName() { return "received"; } public String getNamespace() { return NAMESPACE; } public String toXML() { return "<received xmlns='" + NAMESPACE + "' id='" + id + "'/>"; }} */import org.jivesoftware.smack.packet.PacketExtension;import org.jivesoftware.smackx.provider.EmbeddedExtensionProvider;import org.xmlpull.v1.XmlPullParser;import java.util.List;import java.util.Map;public class DeliveryReceiptProvider extends EmbeddedExtensionProvider{ @Override protected PacketExtension createReturnExtension(String currentElement, String currentNamespace, Map<String, String> attributeMap, List<? extends PacketExtension> content) { return new DeliveryReceipt(attributeMap.get("id")); }} //3.) finally where ever you would like to parse packet ProviderManager.getInstance().addExtensionProvider("received", DeliveryReceipt.NAMESPACE, new DeliveryReceiptProvider());欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)