O arquivo não está sendo transferido na API da Smack
Estou desenvolvendo um aplicativo de bate-papo no qual preciso dar suporte à transferência de arquivos. Para isso estou usando o Smack API. Mas meu arquivo não está sendo transferido e estou recebendo oFile status Error
eprogress 0.0
Eu pesquisei na net, mas todos eles são usados da mesma maneira para enviar o arquivo. mas estou recebendo o erro.
Eu sei que há um par de questões sobre esta questão, mas a solução adequada não é dada.
Então, há alguém que tenha idéia sobre isso? Como resolver este problema?
Editar:
Eu tenho tentado mudar o127.0.0.1 para10.0.2.2, e agora eu tenho o status é Negociação, mas depois de algumas tentativas eu tenho o status de erro.
Aqui está o meu código para transferência de arquivos:
ServiceDiscoveryManager sdm = ServiceDiscoveryManager
.getInstanceFor(connection);
if (sdm == null)
sdm = new ServiceDiscoveryManager(connection);
sdm.addFeature("http://jabber.org/protocol/disco#info");
sdm.addFeature("http://jabber.org/protocol/disco#item");
sdm.addFeature("jabber:iq:privacy");
Log.i("send file", "send file");
FileTransferManager manager = new FileTransferManager(
connection);
FileTransferNegotiator.setServiceEnabled(
connection, true);
OutgoingFileTransfer transfer = manager
.createOutgoingFileTransfer("[email protected]/Smack");
Log.i("transfer file",
"outgoingfiletransfer is created");
try {
OutgoingFileTransfer.setResponseTimeout(30000);
transfer.sendFile(
new File(path_file+"/"+"andr.jpeg"),
"Description");
Log.i("transfer file", "sending file");
Log.i("transfer file","the path is :"+path_file+"/"+"andr.jpeg");
while (!transfer.isDone()) {
try {
Thread.sleep(1000);
Log.i("transfer file",
"sending file status :- "
+ transfer.getStatus()
+ " "
+ "progress:-"
+ transfer
.getProgress());
if (transfer.getStatus() == org.jivesoftware.smackx.filetransfer.FileTransfer.Status.error) {
transfer.cancel();
Log.e("", "ERROR");
break;
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
Log.e("catch", "catch" + e);
e.printStackTrace();
}
}
} catch (XMPPException e) {
// TODO Auto-generated catch block
Log.e("catch", "catch" + e);
e.printStackTrace();
}
Log.i("transfer file", "--------");
}
Qualquer ajuda e sugestão serão apreciadas.
obrigado