簡體   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