创建对迪斯科信息Android的响应

时间:2013-12-30 10:21:55

标签: android

我正在开发一个Android应用程序,我需要在其中实现XMPP,所以我使用asmack。

我需要回复来自服务器的disco#info请求。我想创建一个类似的响应:

<iq id="123" type="result" to="x" from="y">
  <xmlns="http://jabber.org/protocol/disco#info">
  <identity category="client" type="bot" name="oo" uid="{1111-2222-3333}"/>
  <feature var="urn:xmpp:ping"/>
  <feature var="jabber:iq:version">
  <feature var="bb" version="123"/>
</iq>

问题在于我不知道如何在功能中添加uid和版本。 我已经做了一些事情:

ServiceDiscoveryManager discoManager =ServiceDiscoveryManager.getInstanceFor(connection);`
discoManager.setIdentityName("oo");
discoManager.setIdentityType("bot");
discoManager.addFeature("urn:xmpp:ping");
discoManager.addFeature("bb");

请帮助我。

2 个答案:

答案 0 :(得分:1)

我找到了解决方案,无法在身份或功能中添加其他内容。 要向迪斯科信息响应添加信息,您可以向您的discomanager添加扩展信息:

//Add uid
DataForm Data = new DataForm("result");
FormField fielduid = new FormField("name");
fielduid.setLabel("System UID");
fielduid.addValue(randomUUID);
Data.addField(fielduid);
discoManager.setExtendedInfo(Data);

答案 1 :(得分:0)

好吧,我不知道Android开发的任何内容,但看起来你在第三个功能声明上缺少/来关闭该行

你的专栏:

<feature var="jabber:iq:version">

我建议:

<feature var="jabber:iq:version"/>