繁体   English   中英

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

[英]How to communicate between WebView & JavaScript?

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

所以,我用Google搜索并找到了传递Java和JavaScript的WebAppInterface 但这种沟通还不够。 我无法从WebAppInterface类发送数据库。

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

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

问候,

您应该将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");

官方链接: 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";
             }
     }      

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

看看这个链接: Cordova插件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM