【问题标题】:JavaScript - Rhino Android Library - Invoking in Android CodeJavaScript - Rhino Android 库 - 在 Android 代码中调用
【发布时间】:2020-11-16 10:48:04
【问题描述】:

我正在使用 rhino-android 库在 java 中调用 java 脚本代码,但我不知道如何在 java 中处理 javascript 中的回调。

Java 脚本代码

   function TestingFunction(data, callback ){
        callback(data);
    }

我正在尝试在 java-Android 代码中调用相同的方法

invocable.invokeFunction("TestingFunction","12345", ?(How to handle callback))

谁能建议如何在 java 代码中处理来自 javascript 的回调?

【问题讨论】:

    标签: javascript java


    【解决方案1】:

    应该可以通过实现org.mozilla.javascript.Function 接口在Rhino 中将Java 回调传递给JavaScript 函数,如下所示:

    invocable.invokeFuntion("TestingFunction", "12345", 
          new org.mozilla.javascript.Function() {
    
        @Override
        public Object call(Context cx, Scriptable scope, Scriptable thisObj,
              Object[] args) {
    
            String data = (String) args[0];
            // do stuff...
        });
    

    【讨论】:

    • 嗨,谢尔盖,感谢您的回复,它工作正常。但我唯一担心的是在 Function() 回调中生成了许多被覆盖的方法,是否有任何替代方法可以克服这一点
    • @Naresh 我想你应该可以改用 org.mozilla.javascript.Callable,这是一个 Function 的超级接口,只有一个调用方法。
    • 嗨,谢尔盖,感谢您的支持,有什么方法可以在 Android Java 的 js 文件中调用 xmlhttprequest
    • @Naresh 我认为这是一个与原始问题没有直接关系的不同问题,因此您可以在此处将其作为一个单独的问题提出。也许它已经回答了,例如见stackoverflow.com/questions/13985560/xmlhttprequest-in-rhino
    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多