2

asmackjarを使用してファイルを受信しようとしています。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());
4

1 に答える 1

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を使用した非常に便利なファイル転送チュートリアルです。asmackとOpenfireを使用したAndroidでのファイル転送

于 2012-09-25T02:52:43.873 に答える