3

我正在开发本机应用程序。我的应用程序有一个WebView. 我想记录这个WebView组件的每一个动作。单击了哪个按钮,拖动了哪个图像。之后,我将记录那些我想存储在 SQLite 中的东西。

所以,我用谷歌搜索并找到WebAppInterface了哪些通信 Java 和 JavaScript。但这种交流是不够的。我无法从WebAppInterface课堂上发送数据库。

我实际上想问这个问题(分钟46:00)。

是否可以?或者,另一种解决方案?

问候,

4

3 回答 3

7

您应该像这样将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");
于 2013-02-28T09:18:31.693 回答
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())");

------------------------------------------- 必须 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";
             }
     }      
于 2014-06-11T16:37:40.457 回答
0

你有没有看过 PhoneGap 和 Cordova 插件?Cordova 插件在 Java 到 webview 和 webview 到 Java 之间提供了非常强大的通信。并且已经有一些关于记录数据的开源插件,您可以将其嵌入到您的应用程序中。

看看这个链接:Cordova Plugin

于 2013-02-28T09:15:34.700 回答