我正在尝试使用smack api + Openfire服务器在多用户聊天室中传输文件。 我使用以下代码传输文件,但能够发送文件:
public void SendFile(final String Receiver) {
System.out.println("Receiver is:- "+Receiver);
Thread thread = new Thread() {
public void run() {
ServiceDiscoveryManager sdm = ServiceDiscoveryManager
.getInstanceFor(mConnection);
sdm.addFeature("http://jabber.org/protocol/disco#info");
sdm.addFeature("jabber:iq:privacy");
// Create the file transfer manager
FileTransferManager manager = FileTransferManager.getInstanceFor(mConnection);
FileTransferNegotiator fns = FileTransferNegotiator.getInstanceFor(mConnection);
// Create the outgoing file transfer
OutgoingFileTransfer transfer = manager
.createOutgoingFileTransfer(Receiver+"/Smack");
Log.i("transfere file", "outgoingfiletransfere is created");
// Send the file
try {
File myFile = new File("/storage/extSdCard/IMG-20161030-WA0071.jpg");
if (myFile.exists()) {
System.out.println("File exist..");
// Toast.makeText(mApplicationContext, "File Exist---", Toast.LENGTH_SHORT).show();
} else {
System.out.println("File does not exist..");
// Toast.makeText(mApplicationContext, "NOt Exist---", Toast.LENGTH_SHORT).show();
}
OutgoingFileTransfer.setResponseTimeout(30000);
try {
transfer.sendFile(myFile, "Description");
}catch (Exception e){
e.printStackTrace();
}
Log.i("transfere file", "sending file");
while (!transfer.isDone()) {
try {
Thread.sleep(1000);
Log.i("transfere file", "sending file status "
+ transfer.getStatus() + "progress: "
+ transfer.getProgress());
if (transfer.getStatus() == FileTransfer.Status.error) {
transfer.cancel();
break;
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("transfere file", "sending file done");
}
};
thread.start();
}
O / P :发送文件状态Errorprogress:0.0
请帮助