выполнение javascript-кода внутри Android-приложения "java" - PullRequest
1 голос
/ 28 марта 2012

Я работаю над приложением для Android "нативно написано на Java" и я получаю ответ от сервера, ответ является функцией JavaScript

Мне нужно использовать эту функцию, чтобы выполнить некоторые вычисления внутри моего нативного кода Java.

любые идеи, как это сделать.

образец ответа:

function logic_1(surveyString, responseValuesString) { 
    var survey = eval(surveyString);
    var responseValues = eval(responseValuesString);
    var target = new Object();
if (isChosen(128133225, responseValues)) { 
target.id = 2;
}
if (! target.id) { 
    target.id = 2;
 } 
    return target;
 } 

Ответы [ 3 ]

3 голосов
/ 28 марта 2012

Ранее я успешно использовал Rhino для выполнения кода JavaScript на Android: http://www.mozilla.org/rhino/

1 голос
/ 28 марта 2012

Вот пример того, как вернуть значения из сложного типа:

String strFunction = 
        "function add(x,y){ " +
            "return { " +
                "id:x+y " +
            "}; " +
        "}";

Context context = Context.enter();
ScriptableObject scope = context.initStandardObjects();
context.evaluateString(scope, strFunction, "test", 1, null);

Function functionAdd = (Function)scope.get("add");
NativeObject untypedResult = (NativeObject)functionAdd.call(context, scope, scope, new Object[] { 1, 2 });
double id = (Double)untypedResult.get("id", untypedResult);

Важной частью являются последние две строки, где мы вызываем функцию JavaScript, обрабатываем результат как NativeObject, а затемполучить значение свойства id из этого объекта.

0 голосов
/ 28 марта 2012

Может быть, вам просто нужно использовать JavaScript auto executing function, например:

(function(x, y){
  var result;
  result = x + y; // do some calculations
  return result;
})(1 , 2); //  you can set your parameters from Java

и 1, 2 - это всего лишь два параметра из Java

...