我正在尝试使用smack和openfire xmpp发送图像文件。为此,我正在使用FileTransferManager类。为了使用FileTransferManager类,我使用asmack-android-6.jar。我按照这个link来共享文件。这个问题也在本教程下面的评论中共享,但是没有给出解决此问题的好方法。然后我在Stack Overflow上搜索,许多开发人员都问过这个问题,但只有1-2个人得到了回复,并且others 没有。
我学习了我找到的所有答案,尝试了谷歌给我的所有方法,但仍然无法解决这个问题。
我使用的代码是:
我学习了我找到的所有答案,尝试了谷歌给我的所有方法,但仍然无法解决这个问题。
我使用的代码是:
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");
}
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](http://paste.ubuntu.com/9932239/)
configureProviderManager(connection);
transfer.sendFile(file, "test_file");
} catch (XMPPException e) {
e.printStackTrace();
}
while(!transfer.isDone()) {
Log.d("status", transfer.getStatus().toString());
Log.d("percent", new Long(transfer.getBytesSent()).toString());
if (transfer.getStatus() == Status.error) {
Log.e("percent", "Error " + new Long(transfer.getBytesSent()).toString() + " " + transfer.getError() + " " + transfer.getException());
transfer.cancel();
}
if(transfer.getStatus().equals(Status.refused))
System.out.println("refused " + transfer.getError());
else if( transfer.getStatus().equals(Status.error))
System.out.println(" error " + transfer.getError());
else if(transfer.getStatus().equals(Status.cancelled))
System.out.println(" cancelled " + transfer.getError());
else
System.out.println("Success");
}
}
d.dismiss();
}
});
我得到的logcat非常大,所以我提供了它的链接。有人能告诉我我犯了什么错误,或者建议我做出什么修改来完成任务吗?