2012-09-24 46 views
2

我正在嘗試使用asmack jar接收文件。我能夠在我的android設備上接收文本,沒有問題,但是當我設置文件傳輸時,我收到一條錯誤消息,說「不支持文件傳輸」。監聽器永遠不會被調用。我建立了我的聽衆是這樣的:使用asmack在Android中接收文件

if (m_connection != null) 
     { 

      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"); 
      } 

      // new ServiceDiscoveryManager(connection); 
      FileTransferNegotiator.setServiceEnabled(connection, true); 
      FileTransferManager manager = new FileTransferManager(m_connection); 
      manager.addFileTransferListener(new FileTransferListener() { 
       public void fileTransferRequest(final FileTransferRequest request) 
       { 

        Log.i("InstallerActivity", "Got new File!!!"); 

編輯:添加這些,使其工作:

pm.addIQProvider("si", "http://jabber.org/protocol/si", new StreamInitiationProvider()); 

    pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", new BytestreamsProvider()); 
    pm.addIQProvider("open", "http://jabber.org/protocol/ibb", new IBBProviders.Open()); 
    pm.addIQProvider("close", "http://jabber.org/protocol/ibb", new IBBProviders.Close()); 
    pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb", new IBBProviders.Data()); 
    pm.addIQProvider("open", "http://jabber.org/protocol/ibb", new OpenIQProvider()); 
    pm.addIQProvider("data", "http://jabber.org/protocol/ibb", new DataPacketProvider()); 
    pm.addIQProvider("close", "http://jabber.org/protocol/ibb", new CloseIQProvider()); 
    pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb", new DataPacketProvider()); 
+0

我已經在使用此解決方案,但仍面臨着這個問題。你能幫助解決這個問題嗎? –

回答

2

你加IQProvider功能爲FileTransfer

// //File transfer 
    pm.addIQProvider("si", "http://jabber.org/protocol/si", 
      new StreamInitiationProvider()); 
    pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", 
      new BytestreamsProvider()); 
    pm.addIQProvider("open", "http://jabber.org/protocol/ibb", 
      new OpenIQProvider()); 
    pm.addIQProvider("close", "http://jabber.org/protocol/ibb", 
      new CloseIQProvider()); 
    pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb", 
      new DataPacketProvider()); 

這裏是非常有用的文件傳輸教程使用asmack。 File transfer in android with asmack and Openfire

+0

謝謝!這有什麼問題嗎?我添加了上面的所有內容。這是正確的嗎他們之間有什麼區別? – user1163234

+0

@Jul我已經在使用這個解決方案,但仍然面臨着這個問題。你能幫助解決這個問題嗎? –

+0

@Jul我已經使用您的解決方案仍面臨同樣的問題。你能看到這個[鏈接](http://stackoverflow.com/q/28271210/4358880) –

相關問題