filetransfer in android through xmpp?

﹥>﹥吖頭↗ 提交于 2019-12-05 17:22:43

you have to make a dummy service discovery manager.

new ServiceDiscoveryManager(your XMPP connection);

now this line does not cause any problems.

mFileTransferManager = new FileTransferManager(your XMPP connection);

First, you have to copy a smack.properties to you android emulator. You can get smack.properties at the original SMACK API site.

http://www.igniterealtime.org/downloads/source.jsp

push smack.properties into "/data/" folder.

Modify initialize() method of ProviderManager.java (it's in org/jivesoftware/smack/provider) as follows.

Find the following line.

        Enumeration providerEnum = classLoader.getResources(
                "/META-INF/smack.providers");

Replace it with

        Enumeration providerEnum = classLoader.getResources(
                "/data/smack.providers");

Hope this help

Please use this one for file transfer in asmack. I have done this and have checked it. Its working perfect.

to receive a file use this method

public void ReceiveFile() {
        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
                final FileTransferManager managerListner = new FileTransferManager(
                        connection);

                FileTransferNegotiator
                        .setServiceEnabled(connection, true);

                Log.i("File transfere manager", "created");

                // Create the listener
                managerListner
                        .addFileTransferListener(new FileTransferListener() {
                            public void fileTransferRequest(
                                    final FileTransferRequest request) {

                                Log.i("Recieve File",
                                        "new file transfere request  new file transfere request   new file transfere request");

                                Log.i("file request",
                                        "from" + request.getRequestor());

IncomingFileTransfer transfer = request.accept();

                Log.i("Recieve File alert dialog", "accepted");
                try {


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

        while (!transfer.isDone() || (transfer.getProgress() < 1)) {

                        Thread.sleep(1000);
Log.i("Recieve File alert dialog", "still receiving : "
                                + (transfer.getProgress()) + " status "
                                + transfer.getStatus());

                            if (transfer.getStatus().equals(Status.error)) {
                                // Log.i("Error file",
                                // transfer.getError().getMessage());
                                Log.i("Recieve File alert dialog",
                                        "cancelling still receiving : "
                                                + (transfer.getProgress())
                                                + " status "
                                                + transfer.getStatus());
                                transfer.cancel();

                                break;
                            }

                    }

} catch (XMPPException e) {

                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                        });

            }
        };
        thread.start();
    }

just ask me if you have any queries regarding file transfer in xmpp using asmack lib.

Thanks

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!