Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android内部执行javascript代码;爪哇语;应用_Java_Javascript_Android_Javascript Engine - Fatal编程技术网

在Android内部执行javascript代码;爪哇语;应用

在Android内部执行javascript代码;爪哇语;应用,java,javascript,android,javascript-engine,Java,Javascript,Android,Javascript Engine,我正在开发一款Android应用程序“本机java编写” 我从服务器得到一个响应,响应是一个javascript函数 我需要使用这个函数在我的本地java代码中进行一些计算 有什么办法吗 样本响应: function logic_1(surveyString, responseValuesString) { var survey = eval(surveyString); var responseValues = eval(responseValuesString);

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

也许您只需要使用如下的
JavaScript自动执行函数

(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中的两个参数

也许您只需要使用
JavaScript自动执行函数
,如下所示:

(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中的两个参数

我以前成功地使用Rhino在Android上执行JavaScript代码:

我以前曾成功使用Rhino在Android上执行JavaScript代码:

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

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

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

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

可能响应是函数的结果,或者一个指示要运行的java函数的代码?您得到了什么响应?响应是一个javascript函数。我想在java代码中使用此JS代码。如果您有权访问该代码,建议更改服务器的响应方式。将特定于编程的数据返回给客户端是一个坏习惯。也许响应可能是函数的结果,或者一个指示要运行的java函数的代码?您得到了什么响应?响应是一个javascript函数。我想在java代码中使用此JS代码。如果您有权访问该代码,建议更改服务器的响应方式。将特定于编程的数据返回到客户端是一个坏习惯。我得到的响应是一个包含2个输入参数的函数。。我可以从java代码中输入这个函数吗?我的意思是“function logic_1(surveyString,responseValuesString)”任何从Java设置这两个参数的方法??是的,Rhino API没有问题。这个答案描述了如何做到这一点:工作完美!谢谢,好的,还有一个问题。。。您可以看到该函数正在返回一个对象var target=new object();我能够在返回中捕获整数、布尔值和字符串,但是如何捕获对象呢?我已经发布了一个示例作为单独的答案,因此我可以包含代码。我得到的响应是一个包含两个输入参数的函数。。我可以从java代码中输入这个函数吗?我的意思是“function logic_1(surveyString,responseValuesString)”任何从Java设置这两个参数的方法??是的,Rhino API没有问题。这个答案描述了如何做到这一点:工作完美!谢谢,好的,还有一个问题。。。您可以看到该函数正在返回一个对象var target=new object();我能够在返回中捕获整数、布尔值和字符串,但如何捕获对象?我已经发布了一个示例作为单独的答案,因此我可以包含代码。@VivekKumarSrivastava您不明白什么?@VivekKumarSrivastava不明确,它是用于使用Mozilla Rhino库的Java的:。不过它可以在Android上运行。@VivekKumarSrivastava你还不明白什么?@VivekKumarSrivastava不明确,它是用于使用Mozilla Rhino库的Java的:。不过,它可以在Android上运行。