【问题标题】:Receive Files in Android using asmack使用 asmack 在 Android 中接收文件
【发布时间】:2012-09-16 01:37:54
【问题描述】:

我正在尝试使用 asmack jar 接收文件。我可以在我的 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());

【问题讨论】:

  • 我已经在使用这个解决方案,但我仍然面临这个问题。你能帮忙解决这个问题吗?

标签: android xmpp file-transfer smack asmack


【解决方案1】:

您是否为FileTransfer 添加了IQProvider 功能?

// //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

【讨论】:

  • 谢谢!有这方面的任何文件吗?我添加了上面所有的。这是正确的,它们之间有什么区别?
  • @Jul 我已经在使用这个解决方案,但我仍然面临这个问题。你能帮忙解决这个问题吗?
  • @Jul 我用过你的解决方案仍然面临同样的问题。你能看到这个link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多