Android 自定义IQProvider的aSmack PacketListener不工作
我已为尝试接收的协议创建了自定义IQProvider类。提供者似乎工作正常,因为不会向服务器发送关于未实现的消息类型的自动响应 这是我的提供者:Android 自定义IQProvider的aSmack PacketListener不工作,android,xmpp,asmack,Android,Xmpp,Asmack,我已为尝试接收的协议创建了自定义IQProvider类。提供者似乎工作正常,因为不会向服务器发送关于未实现的消息类型的自动响应 这是我的提供者: public class OA_IQProvider implements IQProvider{ public static final String NAMESPACE = "connect.logitech.com"; public static final String ELEMENT_NAME = "oa"; public static f
public class OA_IQProvider implements IQProvider{
public static final String NAMESPACE = "connect.logitech.com";
public static final String ELEMENT_NAME = "oa";
public static final String result = "RESULT";
private Map<String, String> list = new HashMap<String, String>();
@Override
public IQ parseIQ(XmlPullParser parser) throws Exception
{
boolean stop = false;
String name = parser.getName();
while(false == stop)
{
switch (parser.getEventType())
{
case XmlPullParser.START_TAG:
{
if(ELEMENT_NAME.equals(name))
{
list.put(result, parser.getText());
}
break;
}
case XmlPullParser.END_TAG:
{
stop = ELEMENT_NAME.equals(name);
break;
}
}
}
name = null;
return new OA_IQ(list);
}
}
public class OA_IQ extends IQ
{
public static final String ID = "servertime";
private Map<String, String> list;
public OA_IQ(Map<String, String> l)
{
list = l;
}
@Override
public String getChildElementXML()
{
return null;
}
public String getResult()
{
return list.get(OA_IQProvider.result);
}
}
ProviderManager.getInstance().addIQProvider(OA_IQProvider.ELEMENT_NAME, OA_IQProvider.NAMESPACE, new OA_IQProvider());
我已经实现了以下PacketListener:
conn2.addPacketListener(new PacketListener() {
@Override
public void processPacket(Packet p) {
Log.d(TAG, p.toXML());
}
}, new PacketTypeFilter(Packet.class));
我还尝试了其他各种过滤器,如IQFilters。
在调试日志中,我确实收到以下消息:
08-01 23:13:45.188 22174-23246/com.xxx.testingapp D/SMACK﹕ 11:13:45 PM RCV (1105212208): <iq id="v3" to="guest" type="get"><oa xmlns='connect.logitech.com' mime='vnd.logitech.connect/vnd.logitech.pair' errorcode='200' errorstring='OK'><![CDATA[serverIdentity=xxx:hubId=97:identity=xxx:status=succeeded:protocolVersion={XMPP="1.0", HTTP="1.0", RF="1.0"}:hubProfiles={Harmony="2.0"}:productId=Pimento:friendlyName=xxx]]></oa></iq>
08-01 23:13:45.188 22174-23246/com.xxx.testingapp D/SMACK﹕ 晚上11:13:45 RCV(1105212208):
我试图完成的是从服务器响应中获取标识。我试着查看调试源代码,因为基本上我要完成的是调试功能已经完成的工作。但我找不到PM RCV的解析位置
也许我的问题是PM RCV没有被PacketListener捕获