1

我正在开发一个 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;
 } 
4

3 回答 3

3

我之前曾成功使用 Rhino 在 Android 上执行 JavaScript 代码: http ://www.mozilla.org/rhino/

于 2012-03-28T09:27:30.977 回答
1

下面是一个如何从复杂类型返回值的示例:

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' 属性的值。

于 2012-03-28T13:45:31.867 回答
0

也许你只需要使用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 中的两个参数

于 2012-03-28T09:25:24.690 回答