[英]How to communicate between WebView & JavaScript?
我正在开发本机应用程序。 我的应用程序有一个WebView
。 我想记录这个WebView
的组件的每个动作 。 单击了哪个按钮,拖动了哪个图像。 在那之后,我将记录那些东西,我想存储在SQLite中。
所以,我用Google搜索并找到了传递Java和JavaScript的WebAppInterface
。 但这种沟通还不够。 我无法从WebAppInterface
类发送数据库。
我想问这个问题 (分钟46:00
)。
可能吗? 或者,另一种解决方案
问候,
您应该将javascript界面添加到您的webView,如下所示:
webView.addJavascriptInterface(new JavascriptInterface(this), "AndroidFunction");
你应该创建接口类:
public class JavascriptInterface{
Context mContext;
JavascriptInterface(Context c) {
mContext = c;
}
public void save(String action){
// save to database
}
}
在网站上你应该致电:
AndroidFunction.save("actionName");
官方链接: http : //developer.android.com/reference/android/webkit/WebView.html
class JsObject {
@JavascriptInterface
public String toString() { return "injectedObject"; }
}
webView.addJavascriptInterface(new JsObject(), "injectedObject");
webView.loadData("", "text/html", null);
webView.loadUrl("javascript:alert(injectedObject.toString())");
-------------------------------必须API> 17
我的调整,HTML,jsobj.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Hello TEST JS</title>
</head>
<body style="background: white; font-family: Helvetica">
<script type="text/javascript">
document.write(AndroidFunction.show());
AndroidFunction.save("abc");
</script>
</html>
安卓:
web.addJavascriptInterface(new JsObject(), "AndroidFunction");
...
class JsObject{
@JavascriptInterface
public void save(String action){
L.d("action:"+action);
}
public String show(){
return "Hello Android";
}
}
你有没有看过PhoneGap和Cordova插件? Cordova Plugin在Java与webview和webview之间提供了非常强大的Java通信。 已经有一些关于记录数据的开源插件,你可以嵌入到你的应用程序中。
看看这个链接: Cordova插件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.