如何在WebView和&之间进行通信JavaScript的?

时间:2013-02-28 09:08:58

标签: javascript android sqlite android-layout android-webview

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

所以,我用Google搜索并找到WebAppInterface来传达Java& JavaScript的。但这种沟通还不够。我无法从WebAppInterface课程发送数据库。

我想实际问this question(分钟46:00)。

有可能吗?或者,另一种解决方案?

此致

3 个答案:

答案 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