如何使用smack api + openfire在多用户聊天室中传输文件

时间:2016-11-08 07:23:15

标签: android openfire file-transfer asmack multiuserchat

我正在尝试使用smack api + Openfire服务器在多用户聊天室中传输文件。 我使用以下代码传输文件,但能够发送文件:

public void SendFile(final String Receiver) {

    System.out.println("Receiver is:- "+Receiver);
    Thread thread = new Thread() {

        public void run() {
            ServiceDiscoveryManager sdm = ServiceDiscoveryManager
                    .getInstanceFor(mConnection);

            sdm.addFeature("http://jabber.org/protocol/disco#info");

            sdm.addFeature("jabber:iq:privacy");
            // Create the file transfer manager

            FileTransferManager manager = FileTransferManager.getInstanceFor(mConnection);

            FileTransferNegotiator fns = FileTransferNegotiator.getInstanceFor(mConnection);

            // Create the outgoing file transfer

            OutgoingFileTransfer transfer = manager
                    .createOutgoingFileTransfer(Receiver+"/Smack");
            Log.i("transfere file", "outgoingfiletransfere is created");

            // Send the file

            try {
                File myFile = new File("/storage/extSdCard/IMG-20161030-WA0071.jpg");

                if (myFile.exists()) {
                    System.out.println("File exist..");
                   // Toast.makeText(mApplicationContext, "File Exist---", Toast.LENGTH_SHORT).show();

                } else {
                    System.out.println("File does not exist..");
                   // Toast.makeText(mApplicationContext, "NOt Exist---", Toast.LENGTH_SHORT).show();
                }

                OutgoingFileTransfer.setResponseTimeout(30000);

                try {
                    transfer.sendFile(myFile, "Description");
                }catch (Exception e){
                    e.printStackTrace();
                }


                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() == FileTransfer.Status.error) {

                            transfer.cancel();

                            break;

                        }

                    } catch (InterruptedException e) {

                        // TODO Auto-generated catch block

                        e.printStackTrace();

                    }

                }

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            Log.i("transfere file", "sending file done");

        }

    };

    thread.start();

}

O / P :发送文件状态Errorprogress:0.0

请帮助

0 个答案:

没有答案
相关问题