我正在开发本机应用程序。我的申请有一个WebView
。我想记录此WebView
组件的每个操作。单击了哪个按钮,拖动了哪个图像。在那之后,我将记录那些东西,我想存储在SQLite中。
所以,我用Google搜索并找到WebAppInterface
来传达Java& JavaScript的。但这种沟通还不够。我无法从WebAppInterface
课程发送数据库。
我想实际问this question(分钟46:00
)。
有可能吗?或者,另一种解决方案?
此致
答案 0 :(得分:7)
你应该像你那样在你的webView中添加javascript界面:
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");
答案 1 :(得分:1)
官方链接: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())");
------------------------------- MUST 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";
}
}
答案 2 :(得分:0)
你有没有看过PhoneGap和Cordova插件? Cordova Plugin在Java与webview和webview之间提供了非常强大的Java通信。已经有一些关于记录数据的开源插件,你可以嵌入到你的应用程序中。
请看这个链接:Cordova Plugin