2

I am trying to receive a file using the asmack jar. I am able to receive text on my android device with no problem but when I set up the file transfer I get an error saying that "does not support file transfers". The listener is never being called... I set up my listener like this:

if (m_connection != null)
        {

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

            // new ServiceDiscoveryManager(connection);
            FileTransferNegotiator.setServiceEnabled(connection, true);
            FileTransferManager manager = new FileTransferManager(m_connection);
            manager.addFileTransferListener(new FileTransferListener() {
                public void fileTransferRequest(final FileTransferRequest request)
                {

                    Log.i("InstallerActivity", "Got new File!!!");

EDIT: Added these to make it work:

pm.addIQProvider("si", "http://jabber.org/protocol/si", new StreamInitiationProvider());

    pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", new BytestreamsProvider());
    pm.addIQProvider("open", "http://jabber.org/protocol/ibb", new IBBProviders.Open());
    pm.addIQProvider("close", "http://jabber.org/protocol/ibb", new IBBProviders.Close());
    pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb", new IBBProviders.Data());
    pm.addIQProvider("open", "http://jabber.org/protocol/ibb", new OpenIQProvider());
    pm.addIQProvider("data", "http://jabber.org/protocol/ibb", new DataPacketProvider());
    pm.addIQProvider("close", "http://jabber.org/protocol/ibb", new CloseIQProvider());
    pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb", new DataPacketProvider());
Trung Nguyen
  • 7,442
  • 2
  • 45
  • 87
user1163234
  • 2,407
  • 6
  • 35
  • 63

1 Answers1

2

Did you add IQProvider feature for FileTransfer?

// //File transfer
    pm.addIQProvider("si", "http://jabber.org/protocol/si",
            new StreamInitiationProvider());
    pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams",
            new BytestreamsProvider());
    pm.addIQProvider("open", "http://jabber.org/protocol/ibb",
            new OpenIQProvider());
    pm.addIQProvider("close", "http://jabber.org/protocol/ibb",
            new CloseIQProvider());
    pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb",
            new DataPacketProvider());

Here is very useful file transfer tutorial using asmack. File transfer in android with asmack and Openfire

Trung Nguyen
  • 7,442
  • 2
  • 45
  • 87
  • Thanks! Is there any doucumentation on this? I added all of the ones above. Is this correct what is the difference between them? – user1163234 Sep 28 '12 at 07:02
  • @Jul I am already using this solution but still I am facing this problem. Can you help in solving this problem? – nawaab saab Jan 30 '15 at 04:06
  • @Jul I have used your solution still facing the same problem. Can you see over this [link](http://stackoverflow.com/q/28271210/4358880) – Android Rockss Feb 02 '15 at 06:05