【问题标题】:Native code calling JS in Android webappsAndroid webapps中调用JS的原生代码
【发布时间】:2012-02-09 20:17:01
【问题描述】:

我正在编写一个Android“网络”应用程序(我不会将应用程序上传到网络,而是在应用程序资源中设置HTML+JS)。这意味着,GUI 将是 HTML5,我将使用另一个“本机”线程从麦克风读取数据,并希望将“解析文本”发送到 HTML5/JS 代码。

这可能吗?在 Android 代码中,我看到了如何从 JS 调用本机代码(我想要相反)。

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

【问题讨论】:

标签: android html native


【解决方案1】:

是的,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!')");

【讨论】:

  • 不,我想要另一种方式。我想将事件从 Java 推送到 Javascript。
  • 哦,抱歉,等一下。我误会了。
  • 你可以使用同一个 JS 桥将事件从 Java 推送到 JS,但是你必须编写你的 JS 函数来接收这个(或 JS 变量),而不是通过 webView.loadUtl(""); ,实际上你可以通过两种方式来做这件事,从 HTML5 页面设置和获取值,因为页面是在 Webview 组件中运行的。
猜你喜欢
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多