I’ve been having serious issues trying to send a file to my android client from a preexisting windows client. The Windows client works fine with incoming/outgoing to other Windows Client. The android client can only send to the Windows client, it can’t recieve.
My code is
FileTransferManager manager = ``new
FileTransferManager(connection);
manager.addFileTransferListener(``new
FileTransferListener() {
``public
void
fileTransferRequest(``final
FileTransferRequest request) {
``new
Thread(){
``@Override
``public
void
run() {
``IncomingFileTransfer transfer = request.accept();
``File mf = Environment.getExternalStorageDirectory();
``File file = ``new
File(mf.getAbsoluteFile()+``"/DCIM/Camera/"
+ transfer.getFileName());
``try``{
``transfer.recieveFile(file);
``while``(!transfer.isDone()) {
``try``{
``Thread.sleep(1000L);
``}``catch
(Exception e) {
``Log.e(``""``, e.getMessage());
``}
``if``(transfer.getStatus().equals(Status.error)) {
``Log.e(``"ERROR!!! "``, transfer.getError() + ``""``);
``}
``if``(transfer.getException() != ``null``) {
``transfer.getException().printStackTrace();
``}
``}
``}``catch
(Exception e) {
``Log.e(``""``, e.getMessage());
``}
``};
``}.start();
``}
```});`
The code works fine in that I know the listener fires, I can use transfer.getFileName() and get FileSize to get that information, also, on my client a 0kb file is made when the file is sent from a different client (a windows client using the normal smack library)
In my android log, I get this
E/AndroidRuntime(21814): FATAL EXCEPTION: File Transfer jsi_8313049596512102350
E/AndroidRuntime(21814): java.lang.NullPointerException
E/AndroidRuntime(21814): at org.jivesoftware.smackx.filetransfer.Incoming
FileTransfer.negotiateStream(IncomingFileTransfer.java:179)
E/AndroidRuntime(21814): at org.jivesoftware.smackx.filetransfer.Incoming
FileTransfer$1.run(IncomingFileTransfer.java:124)
E/AndroidRuntime(21814): at java.lang.Thread.run(Thread.java:856)