【问题标题】:Android webview: how to obtain result of evaluateJavascript in a method that invokes evaluateJavascript?Android webview:如何在调用evaluateJavascript的方法中获取evaluateJavascript的结果?
【发布时间】:2020-01-16 16:32:05
【问题描述】:

我们知道在Android中,如果我们想获取JavaScript代码调用返回的结果,可以使用webview.evaluateJavascript()。例如:

webview.evaluateJavascript("1+2", new ValueCallback<String>() {
     public void onReceiveValue(String value) {
        //value should be 3
     }
});

但是,如何在调用evaluateJavascript 的方法中进一步获取结果?例如:

public void myFunc() {
   String s;
   webview.evaluateJavascript("1+2", new ValueCallback<String>() {
     public void onReceiveValue(String value) {
        s = value; //This line is only for illustration, it is not syntactically correct
     }
  });
  //Use s to do other things
}

上面的sn-p当然不行,但是有没有可能实现类似的功能呢?

谢谢!

【问题讨论】:

  • 你能不能只移动 onReceiveValue 里面的“做其他事情”部分?

标签: javascript android webview


【解决方案1】:

我是这样做的:

            String js = "window.openDrawer();";

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                mWebView.evaluateJavascript(js, new ValueCallback<String>() {
                    @Override
                    public void onReceiveValue(String s) {
                        Log.i("MyApp", s);
                    }
                });
            }

我不知道写 '1+2' 是否足够 javascript 来获取返回值。您可能需要在 javascript 中声明该函数,然后让该函数返回 1+2 的结果。

类似:

String js = "func SumIt(int a, int b) { return (a + b); }; SumIt(1, 2);"

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多