2011-09-16 17 views
4

私はチャットアプリケーションに取り組んでおり、smack apiを使用してファイル転送を実装する必要があります。 私はオープンファイアサーバに接続することができ、別のクライアントとチャットすることもできます。しかし、私はファイル転送を実装する方法はわかりません。私はコードスニペットを見つけましたが、私もそれを使って送信していません。コードスニペット私が使用しています:あなたは、バージョン3.2.xのを使用している場合smackを使用したアンドロイドファイル転送

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("[email protected]"); 
      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(); 
    } 

をいずれかの解決策を見つける私を助けることができます。..

+0

このスニペットでは何が間違っているようですか? – njzk2

+1

このメソッドを実行するとtransfer.getStatus()= Status.errorが返されます –

+0

@ K-ran-Beastあなたの問題は解決しましたか? – juned

答えて

0

今、私たちは4.1.0にアップデートされたAPIを持っています。

FileTransferRequestとStreamInitiationを使用すると、より簡単になります。

最新のスマックバージョンでご確認ください。

https://www.igniterealtime.org/builds/smack/docs/4.1.0/documentation/extensions/filetransfer.html

+0

フロー私はそのAPIに問題があります、あなたが私を助けてくれますか? [リンク](http://stackoverflow.com/questions/31107005/android-smack-4-1-1-file-transfering-error-could-not-establish-socket) – kobbycoder

関連する問題