Проблемы с привкусом API - PullRequest
1 голос
/ 31 января 2012

Я использую следующий код для передачи файлов в приложении для Android, используя Smack Api и Oepnfire Server.Я не получаю никакой ошибки, но проблема в том, что когда я отправляю файл, я получаю статус отмены в строке 198.Кто-нибудь может мне помочь?. Спасибо заранее.

            String to = mRecipient.getText().toString();
            String text = mSendText.getText().toString();
            // Uri uri = Uri.fromFile(new
            // File("file:///android_asset/test.txt"));
            if (new File("/data/data/" + getPackageName() + "/"
                    + "test.txt").exists()) {
                Log.d("XMPPClient File Exist", "exist");

            }
            SmackConfiguration.setPacketReplyTimeout(15000);
            ConnectionConfiguration config = new ConnectionConfiguration(
                    "192.168.1.200", 5222);
            // config.setRosterLoadedAtLogin(true);
            // config.setSendPresence(true);
            // config.setSASLAuthenticationEnabled(false);
            config.setReconnectionAllowed(true);
            connection = new XMPPConnection(config);
            /*
             * ConnectionConfiguration connConfig = new
             * ConnectionConfiguration("192.168.1.200", 5222, "");
             * connConfig.setReconnectionAllowed(true);;
             * 
             * connection = new XMPPConnection(connConfig);
             */
            try {
                connection.connect();
            } catch (XMPPException e2) {
                // TODO Auto-generated catch block
                e2.printStackTrace();
            }

            try {
                connection.connect();
            } catch (XMPPException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            // connection.login(userName, password);

            ServiceDiscoveryManager servicemanager = ServiceDiscoveryManager
                    .getInstanceFor(connection);
            if (servicemanager == null)
                servicemanager = new ServiceDiscoveryManager(connection);
            servicemanager
                    .addFeature("http://jabber.org/protocol/disco#info");
            servicemanager.addFeature("jabber:iq:privacy");

            // Log.d("XMPPClient Txt File", uri.toString());
            try {
                // Create the outgoing file transfer
                manager = new FileTransferManager(connection);
                FileTransferNegotiator.setServiceEnabled(connection, true);
                OutgoingFileTransfer transfer = manager
                        .createOutgoingFileTransfer("test@192.168.1.200/Smack");
                // Send the file

                // getBaseContext().getAssets().open("Entity");
                // OutgoingFileTransfer.setResponseTimeout(30000);
                transfer.sendFile(new File("/data/data/" + getPackageName()
                        + "/" + "test.txt"), "You won't believe this!");

                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("", transfer.getStatus().toString());
                            Log.e("", "EEEEEERRRRRRRROOORRRRR");
                            break;
                        }
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        Log.e("aaaaaaaaaaaaaaa", "aaaa" + e);
                        e.printStackTrace();
                    }
                }

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

1 Ответ

0 голосов
/ 30 ноября 2016

Да, вам нужно настроить FileTransferListener и принять файл.

открытый класс MyFileTransferListener реализует FileTransferListener {

@Override
public void fileTransferRequest(final FileTransferRequest request) {
 Boolean result = false;
    IncomingFileTransfer ift = request.accept();

, это пример кода, после принятия получить файл .. также незабудьте подключить слушатель при подключении к серверу xmpp

...