我正在编写一个Android“web”应用程序(我不会将APP上传到网络,而是在应用程序资源中设置HTML + JS)。这意味着,GUI将是HTML5,我将使用另一个“本机”线程从麦克风中读取,并希望将“已解析的文本”发送到HTML5 / JS代码。
这可能吗?在Android代码中,我看到如何从JS调用本机代码(我想要相反)。
答案 0 :(得分:8)
是的,Android实际上就是这样。
我正在发布我自己制作的随机示例应用中的示例代码,但这应该可以帮助你。
让我们假设您必须将全局变量添加到您的webview控制类:
String name = "John";
String lastName = "Doe";
在控制webview的Android类中(onCreate()
期间或设置webview时):
webView.addJavascriptInterface(new JavaScriptInterface(), "android")
webview控制类的内部类:
/**
* 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();
}
}
这适用于Android方面,现在通过Javascript使用它:
通过JavaScript获取名称和姓氏:
if (window.android){
name = window.android.getName();
lastName = window.android.getLastName();
}
如果你想举杯,请设置一个javascript,其功能如下:
if (window.android){
window.android.onJavascriptButtonPushed("Hello");
}
修改强>
我没有尝试过这个,但search产生了这个,尝试一下,它应该有用。
如果您想在另一个方向使用它:
JS:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
机器人:
myWebView.loadUrl("javascript:testEcho('Hello World!')");