How to execute JavaScript on Android?

后端 未结 10 1383
迷失自我
迷失自我 2020-11-27 14:38

I have code which uses ScriptEngineManager, ScriptEngine class for executing JavaScript code using Java. But it works fine in Java SE, and doesn\'t work in Android - SDK sh

相关标签:
10条回答
  • 2020-11-27 14:53

    You can use Webview which inherits View class. Make an XML tag and use findViewById() function to use in the activity. But to use the JavaScript, you can make a HTML file containing the JavaScript code. The example blelow might help.

    Webview browser=(Webview) findViewById(R.main.browser); //if you gave the id as browser
    browser.getSettings().setJavaScriptEnabled(true); //Yes you have to do it
    browser.loadUrl("file:///android_asset/JsPage.html"); //If you put the HTML file in asset folder of android
    

    Remember that the JS will run on WebView, not in native environment, thus you might experience a lag or slow FPS in emulator. However when using on an actual phone, the code may run fast, depending on how fast is your phone.

    0 讨论(0)
  • 2020-11-27 14:56

    AndroidJSCore is a great one. And here is another little library I wrote for evaluating JavaScript:

    https://github.com/evgenyneu/js-evaluator-for-android

    jsEvaluator.evaluate("function hello(){ return 'Hello world!'; } hello();", new JsCallback() {
      @Override
      public void onResult(final String result) {
        // get result here (optional)
      }
    });
    

    It creates a WebView behind the scenes. Works on Android version 3 and newer.

    0 讨论(0)
  • 2020-11-27 14:59

    Given that ScriptEngineManager and ScriptEngine are part of the JDK and Android SDK is not the same thing as the JDK I would say that you can't use these classes to work with JavaScript under Android.

    You can check the Android SDK's reference documentation/package index to see what classes are included (what can you work on Android out of the box) and which of them are missing.

    0 讨论(0)
  • 2020-11-27 15:04

    I was also looking for a way to run javascript on Android and came across j2v8 library. This is a java wrapper for Google's v8 engine.

    To use it add a dependency:

    compile 'com.eclipsesource.j2v8:j2v8_android:3.0.5@aar'
    

    It has pretty simple api, but I haven't found any docs online apart from javadoc in maven repository. The articles on their blog are also useful.

    Code sample from this article:

    public static void main(String[] args) {
        V8 runtime = V8.createV8Runtime();
    
        int result = runtime.executeIntegerScript(""
            + "var hello = 'hello, ';\n"
            + "var world = 'world!';\n"
            + "hello.concat(world).length;\n");
    
        System.out.println(result);
    
        runtime.release();
    }
    
    0 讨论(0)
提交回复
热议问题