如何在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";
             }
     }