3

私はネイティブアプリケーションを開発しています。私のアプリケーションにはWebView. WebViewこのコンポーネントのすべてのアクションをログに記録したいと思います。どのボタンがクリックされ、どの画像がドラッグされたか。その後、それらをログに記録し、SQLite に保存します。

それで、私はググって、WebAppInterfaceJavaと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())");

------------------------------- 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";
             }
     }      
于 2014-06-11T16:37:40.457 に答える
0

PhoneGap と Cordova Plugin を見たことがありますか? Cordova プラグインは、Java から Web ビューへ、および Web ビューから Java への非常に強力な通信を提供します。また、データのロギングについて記述されたオープン ソース プラグインがすでにいくつかあります。アプリケーションに埋め込むだけです。

このリンクを見てください: Cordova Plugin

于 2013-02-28T09:15:34.700 に答える