我想知道是否有办法在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错误。这是触发我的主要问题的问题吗?如果是这样,我该如何解决? 谢谢你的耐心等待。 干杯!
答案 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代码
干杯, 旧金山