transToThread.start();
楼主你的这句话写了两遍。 。

解决方案 »

  1.   

    lZ,我现在也遇到了和你差不多的问题,但是又有点区别。我在3G网络的情况下,能够接受到其他客服端的发送文件的请求,但是不能下载文件里面的内容,总是0KB,但是当我和SPark测试的时候,我把文件传输给Spark时,它竟然能够成功接受,我怀疑是指定的协议不对,下载是我保存文件的函数,如果你解决了,请回复下,谢谢!
      public void saveFileListener(final XMPPConnection conn,
    final String loginAccountName, final String chatUserName,
    final FileTransferRequest request) {
    Thread thread = new Thread(new Runnable() { @Override
    public void run() {
    // TODO Auto-generated method stub
    // ServiceDiscoveryManager sdm =
    // ServiceDiscoveryManager.getInstanceFor(conn);
    // if (sdm == null){
    // sdm = new ServiceDiscoveryManager(conn);
    // }
    // sdm.addFeature("http://jabber.org/protocol/disco#info");
    // sdm.addFeature("jabber:iq:privacy");
    // ProviderManager.getInstance().addIQProvider("query","http://jabber.org/protocol/disco#info",
    // new DiscoverInfoProvider());

    ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(conn);
     if (sdm == null){
             sdm = new ServiceDiscoveryManager(conn);
                }
     sdm.addFeature("http://jabber.org/protocol/disco#info");
    //  sdm.addFeature("http://jabber.org/protocol/si/profile/file-transfer");
     sdm.addFeature("jabber:iq:privacy");
     ProviderManager.getInstance().addIQProvider("query","http://jabber.org/protocol/disco#info", new DiscoverInfoProvider());
    //  ProviderManager.getInstance().addIQProvider("si", "http://jabber.org/protocol/si",new StreamInitiationProvider());
     ProviderManager.getInstance().addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider());
     
    Constant.contextDebug(
    TAG,
    "new file transfere request  new file transfere request   new file transfere request"); Constant.contextDebug(TAG, "from" + request.getRequestor());
    IncomingFileTransfer transfer = request.accept();
    Constant.contextDebug(TAG, "accepted");
    String download = context.getResources().getString(
    R.string.download);
    String success = context.getResources().getString(
    R.string.success);
    String fail = context.getResources().getString(R.string.fail);
    String time = RequsetThread.getTime();
    File file = null;

    try {
    file = SdCardManager.createFile(request.getFileName(),
    chatUserName);
    if (file != null) {
    // file_put_contents(file.getAbsolutePath(), transfer.recieveFile());
    Constant.contextDebug(TAG,"file: " + file.getAbsolutePath());
    transfer.recieveFile(file);
    Constant.contextDebug("transfere file","sending file status :  "+ transfer.getStatus());
    while (!transfer.isDone()) {
    Constant.contextDebug("transfere file","sending file status :  "+ transfer.getStatus());
    if (transfer.getStatus().equals(org.jivesoftware.smackx.filetransfer.FileTransfer.Status.in_progress)) {
    Constant.contextDebug("transfere file","sending file status :  "+ org.jivesoftware.smackx.filetransfer.FileTransfer.Status.in_progress);
    Constant.contextDebug(TAG,"Filetransfer Progress: "+ ((int) (transfer.getProgress() * 10000))/ 100.0
    + " Status: "
    + transfer.getStatus().toString()); } else if (transfer.getStatus().equals(org.jivesoftware.smackx.filetransfer.FileTransfer.Status.error)) {
    transfer.cancel();
    ChatInfo chatInfo = new ChatInfo(loginAccountName, download + " "+ file.getName() + " " + fail,time, true);
    sendChatMessage(ChatConstant.My_send_msg,
    chatInfo);
    break;
    }
    Thread.sleep(1000);
    }
    } Constant.contextDebug("transfere file",
    "sending file status :  " + transfer.getStatus()); if (transfer.getStatus() == org.jivesoftware.smackx.filetransfer.FileTransfer.Status.complete) {
    ChatInfo chatInfo = new ChatInfo(loginAccountName,
    download + " " + request.getFileName() + " "
    + success, time, true);
    sendChatMessage(ChatConstant.My_send_msg, chatInfo);
    } else {
    ChatInfo chatInfo = new ChatInfo(loginAccountName,
    download + " " + file.getName() + " " + fail,
    time, true);
    sendChatMessage(ChatConstant.My_send_msg, chatInfo);
    } } catch (Exception e) {
    e.printStackTrace();
    ChatInfo chatInfo = new ChatInfo(loginAccountName, download
    + " " + request.getFileName() + " " + fail, time,
    true);
    sendChatMessage(ChatConstant.My_send_msg, chatInfo);
    request.reject();
    }
    }
    }); thread.start();
    }