2014-10-16 4 views
0

Я пытаюсь использовать следующие plugin и у меня возникла проблема с получением результата JAVA в JS.Результат возврата JS из Java

Ниже приводится краткая версия на плагин, который относится

Java:

public void sendCallback(String action, ServiceInfo info) { 
    JSONObject status = new JSONObject(); 
    try { 
     status.put("action", action); 
     status.put("service", jsonifyService(info)); 
     Log.d("ZeroConf", "Sending result: " + status.toString()); 
     PluginResult result = new PluginResult(PluginResult.Status.OK, 
       status); 
     result.setKeepCallback(true); 
     this.callback.sendPluginResult(result); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

JS

var ZeroConf = { 
watch: function (type, callback) { 
    return exec(function (result) { 
     if (callback) { 
      callback(result); 
     } 

    }, ZeroConf.fail, "ZeroConf", "watch", [type]); 
}};module.exports = ZeroConf; 

В моем HTML файл я пытаюсь показать результат и ничего не работает! Я не очень хорошо знаком с JAVA, поэтому я не уверен, где источник моей проблемы.

Пример HTML-файл:

var app = { 
// Application Constructor 
initialize: function() { 
    this.bindEvents(); 
}, 
bindEvents: function() { 
    document.addEventListener('deviceready', this.onDeviceReady, false); 
}, 
onDeviceReady: function() { 
    app.receivedEvent('deviceready'); 
    ZeroConf.watch('_http._tcp.local.', function(result) { 

Это где я не знаю, как получить доступ к результату с JAVA

alert(result) 
     // do something with the result 


    }); 
}, 
receivedEvent: function(id) { 
    var parentElement = document.getElementById(id); 
    var listeningElement = parentElement.querySelector('.listening'); 
    var receivedElement = parentElement.querySelector('.received'); 
    listeningElement.setAttribute('style', 'display:none;'); 
    receivedElement.setAttribute('style', 'display:block;'); 
    console.log('Received Event: ' + id); 
}}; 

Примечание: Я уверен, что его работа, потому что я могу видеть результаты со стороны JAVA «Log.d»

ответ

0

Вы получаете object в качестве результат. Вам нужно разобрать или подкрепить его, в зависимости от того, что вы хотите с ним сделать.

onDeviceReady: function() { 
    app.receivedEvent('deviceready'); 
    ZeroConf.watch('_http._tcp.local.', function(result) { 
     // Stringify the result to display it all as a string 
     resultText = JSON.stringify(result); 
     alert(resultText); 

     // just display some values from the object 
     // for example PORT and NAME 
     alert("port: "+result.service.port + ", name: "+result.service.name); 

    }); 
}, 

Структура объекта результата описана на plugin's page.

+0

Я подозреваю, что есть проблема с моей реализацией Java и плагина. Результат не возвращается, и поэтому я получаю неопределенное значение при печати значения результата. –

+0

Я поддерживаю этот плагин, и я хотел бы получить больше информации о вашей проблеме. Установили ли вы приложение с помощью cordova-cli? Какую версию Android и тип устройства вы используете? –

Смежные вопросы