2013-02-28 2 views
3

기본 응용 프로그램을 개발 중입니다. 내 신청서는 WebView입니다. 이 모든 작업을 의 구성 요소 에 기록하고 싶습니다. 클릭 한 이미지, 드래그 한 이미지 그 후, 나는 그 것들을 기록 할 것이고, 나는 SQLite에 저장하고 싶다.WebView와 JavaScript 간의 통신 방법은 무엇입니까?

Google 검색 결과 WebAppInterface은 & 자바 스크립트입니다. 그러나이 의사 소통만으로는 충분하지 않습니다. WebAppInterface 클래스에서 데이터베이스를 보낼 수 없습니다.

this question (분 46:00)에게 문의하고 싶습니다.

가능합니까? 아니면 다른 해결책?

감사합니다,

+0

W 당신은 자바 스크립트 인터페이스를 사용하지 않고 자바 스크립트를 삽입하여 웹 사이트의 모든 클릭을 기록합니다. –

+0

나는 그것을 할 수 있지만, 마침내 SQLite를 저장해야합니다. 그러나 어떻게? –

+0

자바 스크립트로 모든 것을 듣고 Cordova Plugin으로 Java로 데이터를 보내 SQLite에 저장 한 후 내 대답을 살펴보십시오. – osayilgan

답변

7

을 :

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"); 
+0

나는 그 해결책을 시도했다. getWritableDatabase(); 메트로가 작동하지 않습니다. –

+0

올바른 컨텍스트를 사용하면 문제가 발생합니다. –

+0

나는 같은 맥락을 시도했다. JavaScript와 Java에서 동일한 데이터를 저장합니다.Java는 작동했지만 JavaScript는 작동하지 않았습니다. 동일한 데이터, 동일한 데이터베이스의 데이터. 전에 대답 해 봤어? –

0

혹시 폰갭와 코르도바 플러그인에 대해 살펴 적이 있습니까? Cordova Plugin은 Java와 Webview 사이에서 Java와의 강력한 커뮤니케이션을 제공합니다. 이미 데이터 로깅에 대해 작성된 오픈 소스 플러그인이 몇 가지 있습니다. 응용 프로그램에 포함시킬 수 있습니다.

이 링크를 살펴 보자 당신은 그런 당신의 웹보기에 자바 스크립트 인터페이스를 추가해야합니다 Cordova Plugin

+0

답변 해 주셔서 감사합니다. 나는 PhoneGap과 Cordova를 안다. 네이티브 앱을 개발하고 싶습니다. –

+0

코르도바 플러그인은 웹보기와 네이티브 쪽 사이의 통신을 제공하기 때문에 네이티브 사용자 인터페이스를 가질 수 없다는 것을 의미하지는 않습니다. 100 % 기본이 될 수 있습니다. – osayilgan

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"; 
      } 
    }  
관련 문제