【问题标题】:android file transfer using smack使用 smack 进行 android 文件传输
【发布时间】:2011-09-16 11:01:08
【问题描述】:

我正在开发聊天应用程序,我必须使用 smack api 实现文件传输。 我能够连接到开火服务器,也可以与另一个客户端聊天。但我不知道如何实现文件传输..我找到了一个代码 sn-p,但我也无法使用它发送它。以下是我正在使用的代码 sn-p:

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();
    }

谁能帮我找到解决办法..

【问题讨论】:

  • 这个片段似乎有什么问题?
  • 当我执行这个方法我得到 transfer.getStatus()=Status.error
  • @K-ran-Beast 你的问题解决了吗?
  • 没有@juned ..仍然无法找到解决方案.......

标签: android xmpp smack


【解决方案1】:

如果您使用的是 3.2.x 版本,则有一个 known problem with file transfer。尝试使用 3.1 看看它是否能解决您的问题。

【讨论】:

    【解决方案2】:

    现在我们有了更新 API 的 4.1.0。

    FileTransferRequest 和 StreamInitiation 现在让它变得更容易了。

    请检查最新的 Smack 版本。

    https://www.igniterealtime.org/builds/smack/docs/4.1.0/documentation/extensions/filetransfer.html

    【讨论】:

    • flow 我在使用该 API 时遇到问题,您能帮帮我吗? link
    猜你喜欢
    • 1970-01-01
    • 2015-10-01
    • 2011-08-28
    • 1970-01-01
    • 2018-11-01
    • 2012-07-24
    • 2020-01-26
    • 2018-02-16
    • 1970-01-01
    相关资源
    最近更新 更多