使用smack的android文件传输

标签 android xmpp smack

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

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

谁能帮我找到解决方案..

最佳答案

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

关于使用smack的android文件传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443707/

相关文章:

java - 如何限制android中edittext的输入时间

apache - ConverseJS 和 OpenFire

xmpp - 在不开始聊天的情况下发送 XMPP 消息

android - 在 Android 上使用 Smack API 获取在服务器上注册并具有在线/离线状态的所有用户的列表

android - Smack/openfire 如何让用户永久留在群聊室

android - 在不播放 Pop-Animation 的情况下弹出 fragment backstack

android - 如何检查用户是否真正启动了 android 应用程序,而不仅仅是返回到 Activity ?

android - Proguard : can't find referenced method 'android. app.DatePickerDialog 访问$000

android - XMPP Smack - 如何检查连接是否处于 Activity 状态或已断开?

ios - 我可以在没有所有 XEP 扩展的情况下 Pod XMPPFramework 吗?