XMPP SMACK文件接收在android上不起作用

XMPP SMACK文件接收在android上不起作用,android,xmpp,file-transfer,smack,asmack,Android,Xmpp,File Transfer,Smack,Asmack,我无法接收从SPARK客户端传输的文件。 我正在使用ASMACK jar库,因此无法进入库 ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection); if (sdm == null){ sdm = new ServiceDiscoveryManager(connection); sdm.addFeature("http://jabber.org/protoco

我无法接收从SPARK客户端传输的文件。 我正在使用ASMACK jar库,因此无法进入库

ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection);
    if (sdm == null){
        sdm = new ServiceDiscoveryManager(connection);
    sdm.addFeature("http://jabber.org/protocol/disco#info");
    sdm.addFeature("jabber:iq:privacy");
    } 

//  new ServiceDiscoveryManager(connection);
    FileTransferNegotiator.setServiceEnabled(connection, false);
    FileTransferManager manager = new FileTransferManager(connection);
    manager.addFileTransferListener(new FileTransferListener() {
        public void fileTransferRequest(FileTransferRequest request) {
            Log.d("", "allows file...");
            if (request != null) {
                // Accept it
                IncomingFileTransfer transfer = request.accept();
                try {

                   // String pathsd =    Environment.getExternalStorageDirectory().toString();

                    String path = "/sdcard/"+ request.getFileName();
                    transfer.recieveFile(new File(path));

                    // transfer.recieveFile(new
                    // File(request.getFileName()));
                     System.out.println("File " + request.getFileName() + "Received Successfully");
    //                      Log.d("", "rece: " +    request.getFileName());                     
    //                      Log.d("", "path: " + request.getFileName());
                    // InputStream input = transfer.recieveFile();
                } catch (XMPPException ex) {
                    Log.d("", "er: " + ex);
                }
               } else {
                Log.d("", "reject file...");
                request.reject();
            }
        }
    });

不知道你的asmack基于哪个版本,但是有一个in-Smack,asmack和Spark都基于这个版本。

Beems asmack构建过程是,而且源代码对每个人都是开放的

您的代码看起来是正确的,但为什么要设置此选项

FileTransferNegotiator.setServiceEnabled(connection, false);
是假的吗

XMPP中的文件传输是一个相当复杂的主题。至少有4种方法可以将文件从一个资源获取到另一个资源。由于您没有提供进一步的详细信息,我只能向您介绍如何调试此设备的一般设备:


,它将打印并记录所有进出的XMPP数据包。跟踪与文件传输相关的XMPP节,并确保它们的行为符合XEP中的指定。这可能提供了一个错误的提示。

我正在使用beem项目amsack库,他们已经修补了这个版本。它工作正常,但文件传输没有发生…你能发送文件吗?我有一个错误,服务不可用503