如何从Android调用javascript?

pho*_*nix 11 javascript java android return

我们如何从Android调用javascript?我有这个我想使用的javascript库,我想调用javascript函数并将结果值传递给android java代码.从现在起没有找到答案.我设法从javascript调用android代码,但我想要相反的方式.

Pet*_*ego 18

有一个黑客:

  1. 绑定一些Java对象,以便可以使用WebView从Javascript调用它:

    addJavascriptInterface(javaObjectCallback, "JavaCallback")
    
    Run Code Online (Sandbox Code Playgroud)
  2. 强制执行现有页面中的javascript

    WebView.loadUrl("javascript: var result = window.YourJSLibrary.callSomeFunction();
        window.JavaCallback.returnResult(result)");
    
    Run Code Online (Sandbox Code Playgroud)

(在这种情况下,你的java类JavaObjectCallback应该有一个方法returnResult(..))

注意:这是一个安全风险 - 此网页中的任何JS代码都可以访问/调用绑定的Java对象.最好将一些一次性cookie传递给loadUrl()并将它们传回给你的Java对象,以检查它是你的代码进行调用.

  • Android开发人员的页面也谈到了这种安全风险. - 如果`JavascriptInterface`只包含可以从JavaScript访问的方法,我认为没有风险,这就是为什么@JavascriptInterface注释是在JellyBean(api 17)中引入的? (2认同)