I am unable to transfer file using a smack, I am using android emulator on one side and spark on the other. When I do transfer the application force closes with the following error messages and a notification of file transfer request, after accepting the file, there was an error transfering the file.error log is pasted below.
I searched different solution and one of them says:
First, you have to copy a smack.properties to you android emulator.
You can get smack.properties at the original SMACK API site.
I opened the site and downloaded the source code of smack but unable to find smack.properties anywhere.
1st choice closed.
Second solution proposed was to change the implementation of discoverLocalIP() in org.jivesoftware.smackx.filetransfer.Socks5TransferNegotiator.discoverLocalIP() which I am unable to find.
How can i transfer file?
WARN/dalvikvm(4994): threadid=25: thread exiting with uncaught exception (group=0x4001b188)
ERROR/AndroidRuntime(4994): Uncaught handler: thread File Transfer jsi_8875615847496033183 exiting due to uncaught exception
ERROR/AndroidRuntime(4994): java.lang.ClassCastException: org.jivesoftware.smack.util.PacketParserUtils$2
ERROR/AndroidRuntime(4994): at org.jivesoftware.smackx.filetransfer.FileTransferNegotiator.negotiateOutgoingTransfer(FileTransferNegotiator.java:401)
ERROR/AndroidRuntime(4994): at org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer.negotiateStream(OutgoingFileTransfer.java:359)
ERROR/AndroidRuntime(4994): at org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer.access$100(OutgoingFileTransfer.java:35)
ERROR/AndroidRuntime(4994): at org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer$2.run(OutgoingFileTransfer.java:214)
ERROR/AndroidRuntime(4994): at java.lang.Thread.run(Thread.java:1096)
The config files are under
The ones you will need are
Your specific error is caused by the fact that the ProviderManager has not been configured with the smack.providers file. This results in the incoming packets being read into the default PacketExtension instead of the one configured for the specific stanza type.
If you are using asmack, I would think that would be handled already. If regular Smack, you will have to configure the ProviderManager to read the file from the right location.
I think you can do this by extending ProviderManager and overriding the initialize() method. Basically copy the existing one but specify the android resource directory instead of the META-INF one. There is already a Jira task against this to make the directory configurable, but it isn’t resolved yet.
In addition, there was a bug in file transfer that was fixed in the latest version (3.2.1).