Прием файла XMPP SMACK не работает на Android - PullRequest
0 голосов
/ 22 сентября 2011

Я не могу получить файл, который я передаю из клиента SPARK.Я использую ASMACK jar Library, поэтому невозможно попасть в библиотеку.

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, false);
    FileTransferManager manager = new FileTransferManager(connection);
    manager.addFileTransferListener(new FileTransferListener() {
        public void fileTransferRequest(FileTransferRequest request) {
            Log.d("", "allows file...");
            if (request != null) {
                // Accept it
                IncomingFileTransfer transfer = request.accept();
                try {

                   // String pathsd =    Environment.getExternalStorageDirectory().toString();

                    String path = "/sdcard/"+ request.getFileName();
                    transfer.recieveFile(new File(path));

                    // transfer.recieveFile(new
                    // File(request.getFileName()));
                     System.out.println("File " + request.getFileName() + "Received Successfully");
    //                      Log.d("", "rece: " +    request.getFileName());                     
    //                      Log.d("", "path: " + request.getFileName());
                    // InputStream input = transfer.recieveFile();
                } catch (XMPPException ex) {
                    Log.d("", "er: " + ex);
                }
               } else {
                Log.d("", "reject file...");
                request.reject();
            }
        }
    });

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 октября 2011

Процесс сборки Beems asmack хорошо документирован , а также источники открыты для всех.

Ваш код выглядит правильно, но почему вы устанавливаете это

FileTransferNegotiator.setServiceEnabled(connection, false);

в false?

Передача файлов в XMPP - довольно сложная тема.Существуют различные способы (как минимум 4), чтобы получить файл с одного ресурса на другой.Поскольку вы не предоставили никакой дополнительной информации, я могу дать вам только общее описание того, как отлаживать это:

Включить отладку соединения в smack , который распечатает и зарегистрирует все пакеты XMPP, которыевходите и выходите. Отследите разделы XMPP, относящиеся к передаче файла, и убедитесь, что они ведут себя так, как указано в XEP.Это может служить подсказкой о том, что идет не так.

0 голосов
/ 22 сентября 2011

Не знаю, на какой версии Smack основана ваша asmack, но существует известная проблема с передачей файлов в Smack, на которой основаны и asmack, и Spark.

...