使用 smack 进行 android 文件传输
Posted
技术标签:
【中文标题】使用 smack 进行 android 文件传输【英文标题】:android file transfer using smack 【发布时间】:2011-09-16 11:01:08 【问题描述】:我正在开发聊天应用程序,我必须使用 smack api 实现文件传输。 我能够连接到开火服务器,也可以与另一个客户端聊天。但我不知道如何实现文件传输..我找到了一个代码 sn-p,但我也无法使用它发送它。以下是我正在使用的代码 sn-p:
public void SendFile(final String Receiver, final String Directory)
Thread thread = new Thread()
public void run()
ServiceDiscoveryManager sdm = ServiceDiscoveryManager
.getInstanceFor(connection);
if (sdm == null)
sdm = new ServiceDiscoveryManager(connection);
sdm.addFeature("http://jabber.org/protocol/disco#info");
sdm.addFeature("jabber:iq:privacy");
// Create the file transfer manager
FileTransferManager manager = new FileTransferManager(
connection);
FileTransferNegotiator
.setServiceEnabled(connection, true);
// Create the outgoing file transfer
OutgoingFileTransfer transfer = manager
.createOutgoingFileTransfer("alok@chd-akumar4" );
Log.i("transfere file", "outgoingfiletransfere is created");
try
OutgoingFileTransfer.setResponseTimeout(30000);
transfer.sendFile(new File(Directory), "Description");
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() == org.jivesoftware.smackx.filetransfer.FileTransfer.Status.error)
transfer.cancel();
Log.e("","EEEEEERRRRRRRROOORRRRR");
break;
catch (InterruptedException e)
// TODO Auto-generated catch block
Log.e("aaaaaaaaaaaaaaa","aaaa"+e);
e.printStackTrace();
catch (XMPPException e)
// TODO Auto-generated catch block
Log.e("aaaaaaaaaaaaaaa","aaaa"+e);
e.printStackTrace();
Log.i("transfere file", "sending file done");
;
thread.start();
谁能帮我找到解决办法..
【问题讨论】:
这个片段似乎有什么问题? 当我执行这个方法我得到 transfer.getStatus()=Status.error @K-ran-Beast 你的问题解决了吗? 没有@juned ..仍然无法找到解决方案....... 【参考方案1】:如果您使用的是 3.2.x 版本,则有一个 known problem with file transfer。尝试使用 3.1 看看它是否能解决您的问题。
【讨论】:
【参考方案2】:现在我们有了更新 API 的 4.1.0。
FileTransferRequest 和 StreamInitiation 现在让它变得更容易了。
请检查最新的 Smack 版本。
https://www.igniterealtime.org/builds/smack/docs/4.1.0/documentation/extensions/filetransfer.html
【讨论】:
flow 我在使用该 API 时遇到问题,您能帮帮我吗? link以上是关于使用 smack 进行 android 文件传输的主要内容,如果未能解决你的问题,请参考以下文章