Context.jsToJava()例子 android
时间: 2023-12-01 07:02:12 浏览: 83
在 Android 中,Rhino JavaScript 引擎是默认的 JavaScript 引擎。您可以使用 Context.jsToJava() 将 JavaScript 对象转换为 Java 对象并返回,以便在 Android 应用程序中进行操作。
下面是一个简单的例子,展示了如何使用 Context.jsToJava() 将 JavaScript 对象转换为 Android 中的 Java 对象:
```java
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.Scriptable;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建 JavaScript 引擎上下文
Context rhino = Context.enter();
try {
// 创建一个新的全局作用域
Scriptable scope = rhino.initStandardObjects();
// 定义一个简单的 JavaScript 函数
String jsFunction = "function add(a, b) { return a + b; }";
// 解析 JavaScript 代码并执行
rhino.evaluateString(scope, jsFunction, "JavaScript", 1, null);
// 获取 JavaScript 函数对象
Object obj = scope.get("add", scope);
// 将 JavaScript 函数对象转换为 Java Function 对象
if (obj instanceof Function) {
Function function = (Function) obj;
// 调用 JavaScript 函数并传入参数
Object[] params = new Object[]{2, 3};
Object result = function.call(rhino, scope, scope, params);
// 将 JavaScript 函数返回值转换为 Java 对象
Object javaResult = Context.jsToJava(result, Integer.class);
// 输出结果
Log.d("MainActivity", "Result: " + javaResult);
}
} finally {
// 释放 JavaScript 引擎上下文
Context.exit();
}
}
}
```
在这个例子中,我们创建了一个简单的 JavaScript 函数 add(),然后使用 Context.jsToJava() 将 JavaScript 函数的返回值转换为 Java 对象,并将其输出到 Android 日志中。
阅读全文