Android Rhino执行js 获取返回值

gradle 导入 Rhino依赖

dependencies {
	//Rhino
    implementation 'org.mozilla:rhino:1.7.12'
}

封装

import org.mozilla.javascript.Context
import org.mozilla.javascript.Function

fun runScript(js: String, funcName: String, params: Array<Any>): Any {
        val rhino = Context.enter()

        rhino.optimizationLevel = -1
        val scope = rhino.initStandardObjects()

        rhino.evaluateString(scope, js, "runScript", 1, null)

        val function = scope.get(funcName, scope) as Function

        val result = function.call(rhino, scope, scope, params)

        return result
    }

调用

val scriptStr= "function test(one,two,three,four){return ''+one+two+three+four}"
//获取结果
val res= runScript(scriptStr, "test", arrayOf("a", "b", "c", "d")).toString()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以的,Android平台可以使用Rhino引擎来执行JavaScript代码。你可以将JavaScript代码保存在一个.js文件中,在Android应用中使用Rhino引擎加载并执行该文件。通过Rhino的API,你可以实现常驻监听的功能。 首先,在你的Android项目中引入Rhino库依赖。然后,创建一个JavaScript上下文对象,并将你的.js文件加载到该上下文中。接下来,你可以调用上下文对象的方法来执行你的JavaScript代码。 下面是一个简单的示例代码,演示了如何在Android应用中使用Rhino引擎执行一个常驻监听的JavaScript代码: ```java import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.ScriptableObject; public class RhinoExample { public static void main(String[] args) { // 创建一个JavaScript上下文对象 Context rhino = Context.enter(); rhino.setOptimizationLevel(-1); // 关闭Rhino的优化,加速加载 try { // 创建一个全局作用域对象 Scriptable scope = rhino.initStandardObjects(); // 加载你的.js文件 String jsCode = "var counter = 0;\n" + "while (true) {\n" + " counter++;\n" + " print('Counter: ' + counter);\n" + " java.lang.Thread.sleep(1000); // 休眠1秒\n" + "}"; rhino.evaluateString(scope, jsCode, "MyScript", 1, null); } catch (Exception e) { e.printStackTrace(); } finally { // 退出Rhino上下文 Context.exit(); } } } ``` 这段JavaScript代码会在一个无限循环中输出计数器的值,并休眠1秒。你可以根据自己的需求修改代码实现常驻监听的功能。 注意,Rhino引擎是一个轻量级的JavaScript引擎,对于一些复杂的JavaScript代码可能会有性能方面的限制。如果你需要处理更复杂的逻辑,可以考虑使用更强大的JavaScript引擎,如V8引擎或J2V8库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值