Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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 无法使用Smack 4.1库从发件人接收自定义IQ_Android_Smack - Fatal编程技术网

Android 无法使用Smack 4.1库从发件人接收自定义IQ

Android 无法使用Smack 4.1库从发件人接收自定义IQ,android,smack,Android,Smack,我一直在尝试向客户端发送自定义iq,但收到名为“不可用服务”的错误。我在发送时得到的错误类型是“取消”。我寻找这种错误类型的解决方案,发现它与不使用完整jid有关,但在我的代码中,正如您所看到的,我使用的是完整jid。有人可以帮助我吗 这是我正在使用的代码 public class CustomIQ extends IQ { String mMyData; public CustomIQ(String mydata) { super("list", "test:namespace")

我一直在尝试向客户端发送自定义iq,但收到名为“不可用服务”的错误。我在发送时得到的错误类型是“取消”。我寻找这种错误类型的解决方案,发现它与不使用完整jid有关,但在我的代码中,正如您所看到的,我使用的是完整jid。有人可以帮助我吗

这是我正在使用的代码

public class CustomIQ extends IQ {

String mMyData;

public CustomIQ(String mydata) {
    super("list", "test:namespace");
    this.mMyData=mydata;
}

@Override
protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {
    xml.rightAngleBracket();
    xml.element("myData", mMyData);
    return xml;
}

}


Custom provider class



public class CustomIQProvider extends IQProvider {

    @Override
    public Element parse(XmlPullParser parser, int initialDepth) throws Exception {
        String data="nothing";
        // Start parsing loop
        int eventType = parser.next();
        outerloop:
        while (eventType != XmlPullParser.END_DOCUMENT) {
            switch (eventType) {
                case XmlPullParser.START_TAG:
                    String elementName = parser.getName();
                    if ("myData".equals(elementName)) {
                        data = parser.nextText();
                    }
                    break;
                case XmlPullParser.END_TAG:
                    if (parser.getDepth() == 3) {
                        break outerloop;
                    }
                    break;
            }
            eventType = parser.next();
        }
        return new CustomIQ(data);
    }
}


Finally i send packet like this.

    enter code here

 CustomIQ myIq = new CustomIQ("test data");
        myIq.setType(IQ.Type.get);
        myIq.setTo("aman@attriaman-android/Smack");
        try {
                mConnection.sendPacket(myIq);
        } catch (Exception exp) {
            exp.printStackTrace();
        }
我做错了什么?提前谢谢