Native code calling JS in Android webapps

穿精又带淫゛_ 提交于 2020-01-11 17:03:53

问题


I am writing an Android "web" app (I will not upload the APP to the web, but set the HTML+JS inside the application resources). That means, the GUI will be HTML5, and I will use another "native" thread to read from the microphone and hopefully send the "parsed text" to the HTML5/JS code.

Is this possible? In the Android code, I see how can I call native code from JS (and I want the opposite).

http://developer.android.com/guide/webapps/webview.html


回答1:


Yes, Android rocks at this actually.

I'm posting example code from a random example app that I made but this should get you going.

Lets start by supposing you have to global variable to your webview controlling class:

String name = "John";
String lastName = "Doe";

In the Android class controlling the webview (during onCreate() or when you setup your webview):

webView.addJavascriptInterface(new JavaScriptInterface(), "android")

Inner class to your webview controlling class:

/**
* Sets up the interface for getting access to Latitude and Longitude data
* from device
**/
private class JavaScriptInterface {
    public String getName() {
        return name;
    }
    public String getLastName() {
        return lastName;
    }
    public void onJavascriptButtonPushed(String text) {
        Toast.makeText(WebViewControllingClass.this, "The text of the pressed button is: "+text,Toast.LENGTH_SHORT).show();
    }
}

Thats it for the Android side, now to use it through Javascript:

To get the name and lastname through JavaScript:

if (window.android){
    name = window.android.getName();
    lastName = window.android.getLastName();
}

If you want to raise the toast, set a javascript whose function would be:

if (window.android){
    window.android.onJavascriptButtonPushed("Hello");
}

Edit:

I havent tried this, but a search yielded this, try it out, it should work.

If you want to use it in the other direction:

JS:

function testEcho(message){
     window.JSInterface.doEchoTest(message);
}

Android:

myWebView.loadUrl("javascript:testEcho('Hello World!')");


来源:https://stackoverflow.com/questions/9218093/native-code-calling-js-in-android-webapps

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!