android:从java问题调用javascript

时间:2011-07-29 08:25:58

标签: java javascript android

我想知道是否有办法在Android上从java调用javascript? 在我的程序中,我将java和javascript一起交互。我正在使用java从TCP服务器接收响应(json数据)并将它们保存到文件中。在webview中我使用javascript jQuery getJSON()函数来检索该文件并使用jQuery绘图图表库来绘制图表。现在,java和javascript之间没有关系。每当我更新数据和文件时,我仍然需要单击webview中的按钮来触发绘图功能。我希望这些程序既聪明又方便。这是一种从java调用或执行javascript的方法。我知道一种方式:

Button update = (Button)findViewById(R.id.update);
        update.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                wv.loadUrl("javascript:document.write('hello')");
            }
        });

但问题是我已经通过loadurl()做了一个索引页。

final WebView wv = (WebView) findViewById(R.id.webkankan);
        wv.getSettings().setJavaScriptEnabled(true);
        wv.loadUrl("file:///android_asset/index.html");

当我触发此点击事件时,所有内容都只在那里删除了一个字符串“hello”。另一件事是为什么我需要将webview的类型更改为final以避免eclipse错误。这是触发我的主要问题的问题吗?如果是这样,我该如何解决? 谢谢你的耐心等待。 干杯!

2 个答案:

答案 0 :(得分:1)

例如,javascript中有一个名为index.html的{​​{1}}方法会读取您在loadData()中保存的文件,那么您可以做的是{{1} }}。这实际上调用了java方法,然后您可以在该方法中读取该文件。希望这能解决你的问题。

或简单来说。 jus执行此操作wv.loadUrl("javascript:loadData()");以从java执行javascript。

答案 1 :(得分:0)

您可以尝试使用javascript将java注册java对象传递给执行javascript的webview。

来自Webview的addJavascriptInterface方法将允许您将Java对象提供给Javascript范围,如下所示:

WebView mWebView = new WebView(mContext);
//... webview initialization, js enabling etc.
MyProxyObject obj = new MyProxyObject(); //This object can interchange just basic types, but Strings are basic types
mWebView.addJavascriptInterface(obj,"myproxyobj");

使用该代码,您将在Javascript上下文中拥有一个对象'myproxyobj',它实际上是一个Java对象。

请记住,您可以只交换基本类型。

有关详情,请查看以下网址:

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

特别检查以下部分:将JavaScript代码绑定到Android代码

干杯, 旧金山