如何在WebView和;JavaScript?
我正在开发本地应用程序。我的应用程序有一个如何在WebView和;JavaScript?,javascript,android,sqlite,android-layout,android-webview,Javascript,Android,Sqlite,Android Layout,Android Webview,我正在开发本地应用程序。我的应用程序有一个WebView。我想记录这个WebView组件的每个动作。单击哪个按钮,拖动哪个图像。在那之后,我将记录这些事情,我想存储在SQLite中 所以,我在谷歌上搜索并找到了WebAppInterface,它可以传递Java和JavaScript。但这种交流是不够的。我无法从WebAppInterface类发送数据库 我想问一下(分钟46:00) 可能吗?或者,另一种解决方案 您好,您有没有看过PhoneGap和Cordova插件?Cordova插件在Java
WebView
。我想记录这个WebView
组件的每个动作。单击哪个按钮,拖动哪个图像。在那之后,我将记录这些事情,我想存储在SQLite中
所以,我在谷歌上搜索并找到了WebAppInterface
,它可以传递Java和JavaScript。但这种交流是不够的。我无法从WebAppInterface
类发送数据库
我想问一下(分钟46:00
)
可能吗?或者,另一种解决方案
您好,您有没有看过PhoneGap和Cordova插件?Cordova插件在Java到webview和webview到Java之间提供了非常强大的通信。而且已经有一些关于记录数据的开源插件,你可以直接嵌入到你的应用程序中
查看此链接:您应该向webView添加javascript界面,如下所示:
webView.addJavascriptInterface(新的JavascriptInterface(this),“AndroidFunction”)代码>
您应该创建接口类:
public class JavascriptInterface{
Context mContext;
JavascriptInterface(Context c) {
mContext = c;
}
public void save(String action){
// save to database
}
}
在网站上,您可以拨打:
AndroidFunction.save("actionName");
官方链接:
-------------------------------空气污染指数必须大于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>
为什么不使用javascript接口并注入javascript来记录网站内的所有点击?我可以这样做,但在我最终存储SQLite之后。但是怎么做呢?看看我的答案,在你听了java脚本的所有内容后,用Cordova插件将数据发送回java并保存到SQLite中。我在我的答案中加入了一些示例代码。@osayilgan,我正在查找Cordova的详细信息。谢谢你的回答。我知道PhoneGap和Cordova。我想开发本机应用程序。Cordova插件只为您提供web视图和本机端之间的通信,所以这并不意味着您不能拥有本机用户界面,您可以使其100%本机。我尝试了该解决方案。getWritableDatabase();Method不起作用。如果使用正确的上下文,它会起作用。我尝试了相同的上下文。我从JavaScript和Java保存相同的数据。Java起作用了,但JavaScript不起作用。数据相同,数据库相同。你以前试过你的答案吗?我的一个应用程序中有类似的东西。如果您正确地将动作名称从javascript传递到java,则保存它不会有问题。您还必须记住启用javascript:webView.getSettings().setJavaScriptEnabled(true);
<!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";
}
}