I am trying to send an image file using smack and openfire xmpp. For this I am using FileTransferManager class. To use FileTransferManager class I am using asmack-android-6.jar. I followed this link to do file sharing. This issue is also shared in comments below on this tutorial but no good resolution is given to this issue. Then I searched over stack overflow, Many Developers have asked this question but only 1-2 have got replies that they have accepted, others not.
I studied all the answers that I found, tried all the ways that google gave me but still unable to solve this problem.
The code I used is:
d.findViewById(R.id.btnsendphoto).setOnClickListener(
-
new OnClickListener() {*
-
@Override*
-
public void onClick(View v) {*
-
// TODO Auto-generated method stub*
-
if (!filepath.equals("")) {*
-
ServiceDiscoveryManager sdm = ServiceDiscoveryManager*
-
.getInstanceFor(connection);*
-
if (sdm == null) {*
-
sdm = new ServiceDiscoveryManager(*
-
connection);*
-
Log.e(“service discovery”, “SDM”);*
-
sdm.addFeature(“http://jabber.org/protocol/disco#info”);*
-
sdm.addFeature(“jabber:iq:privacy”);*
-
}*
-
configureProviderManager(connection);*
-
FileTransferNegotiator.IBB_ONLY = true;*
-
FileTransferNegotiator.setServiceEnabled(connection, true);*
-
mFileTransferManager = new FileTransferManager(*
-
connection);*
_ /*_
_ * OutgoingFileTransfer transfer =_
_ * mFileTransferManager_
_ * .createOutgoingFileTransfer_
_ * (“98c6d889473a6fae@pc/Smack”);_
_ */_
-
String to = connection.getRoster()*
-
.getPresence(“98c6d889473a6fae@pc”)*
-
.getFrom();*
-
OutgoingFileTransfer transfer = mFileTransferManager*
-
.createOutgoingFileTransfer(to);*
-
File file = new File(filepath);*
-
try {*
-
configureProviderManager(connection);*
-
transfer.sendFile(file, “test_file”);*
-
} catch (XMPPException e) {*
-
e.printStackTrace();*
-
}*
-
while(!transfer.isDone()) {*
-
if(transfer.getStatus().equals(Status.error)) {*
-
System.out.println("ERROR!!! " + transfer.getError());*
-
} else if (transfer.getStatus().equals(Status.cancelled)*
-
|| transfer.getStatus().equals(Status.refused)) {*
-
System.out.println("Cancelled!!! " + transfer.getError());*
-
}*
-
try {*
-
Thread.sleep(1000L);*
-
} catch (InterruptedException e) {*
-
e.printStackTrace();*
-
}*
-
}*
-
if(transfer.getStatus().equals(Status.refused) || transfer.getStatus().equals(Status.error)*
-
|| transfer.getStatus().equals(Status.cancelled)){*
-
System.out.println("refused cancelled error " + transfer.getError());*
-
} else {*
-
System.out.println(“Success”);*
-
messages.add(“1 file sent”);*
-
setListAdapter();*
-
}*
-
}*
-
d.dismiss();*
-
}*
-
});*
Logcat I got is:
01-29 09:33:52.330: D/SMACK(1135): 09:33:52 AM RCV (1398525780): test_filehttp://jabber.org/protocol/ibb
01-29 09:33:52.330: D/SMACK(1135): 09:33:52 AM SENT (1398525780):
01-29 09:33:53.306: I/System.out(1135): refused cancelled error null