Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义IQProvider的aSmack PacketListener不工作_Android_Xmpp_Asmack - Fatal编程技术网

Android 自定义IQProvider的aSmack PacketListener不工作

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

我已为尝试接收的协议创建了自定义IQProvider类。提供者似乎工作正常,因为不会向服务器发送关于未实现的消息类型的自动响应

这是我的提供者:

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捕获