使用Smack进行Android文件传输

4

我正在开发一个聊天应用程序,需要使用Smack API实现文件传输。我已经成功连接到Openfire服务器并能够与其他客户端进行聊天。但我不知道如何实现文件传输。我找到了一段代码片段,但是我无法使用它来发送文件。以下是我正在使用的代码片段:

public void SendFile(final String Receiver, final String Directory) {
        Thread thread = new Thread() {
            public void run() {
            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");
            // Create the file transfer manager
            FileTransferManager manager = new FileTransferManager(
                    connection);
            FileTransferNegotiator
            .setServiceEnabled(connection, true);

            // Create the outgoing file transfer
            OutgoingFileTransfer transfer = manager
            .createOutgoingFileTransfer("alok@chd-akumar4" );
            Log.i("transfere file", "outgoingfiletransfere is created");
            try {
                OutgoingFileTransfer.setResponseTimeout(30000);
                transfer.sendFile(new File(Directory), "Description");
                Log.i("transfere file", "sending file");
                while (!transfer.isDone()) {
                    try {
                        Thread.sleep(1000);
                        Log.i("transfere file", "sending file status "
                                + transfer.getStatus() + "progress: "
                                + transfer.getProgress());
                        if (transfer.getStatus() == org.jivesoftware.smackx.filetransfer.FileTransfer.Status.error) {
                            transfer.cancel();
                            Log.e("","EEEEEERRRRRRRROOORRRRR");
                            break;
                        }
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        Log.e("aaaaaaaaaaaaaaa","aaaa"+e);
                        e.printStackTrace();
                    }
                }
            } 
            catch (XMPPException e) {
                // TODO Auto-generated catch block
                Log.e("aaaaaaaaaaaaaaa","aaaa"+e);
                e.printStackTrace();
            }
            Log.i("transfere file", "sending file done");
        }
        };
        thread.start();
    }

有没有人能帮我找到解决方案..

这段内容涉及IT技术,请问您需要更具体的翻译吗?

这段代码似乎有什么问题? - njzk2
1
当我执行这个方法时,我得到了transfer.getStatus() = Status.error。 - Karan_Rana
@K-ran-Beast,你解决了你的问题吗? - Juned
还没有找到解决办法,@juned 。。。 - Karan_Rana
2个回答

0

我在使用该API时遇到了问题,你可以帮我吗?链接 - kobbycoder

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接