2013-02-28 3 views
3

Я разрабатываю собственное приложение. В моем приложении есть WebView. Я хочу записать этот WebView в команду за каждое действие. Какую кнопку щелкнули, изображение перетащили. После этого я зарегистрирую эти вещи, я хочу сохранить в SQLite.Как взаимодействовать между WebView и JavaScript?

Итак, я googled и нашел WebAppInterface который общается Java & JavaScript. Но этого общения недостаточно. Я не могу отправить базу данных из класса WebAppInterface.

Я хочу спросить this question Фактически (минута 46:00).

Возможно ли это? Или другое решение?

С уважением,

+0

W Вы не используете javascript-интерфейс и не добавляете javascript, который будет регистрировать все клики внутри веб-сайта? –

+0

Я могу это сделать, но после того, как я должен наконец добавить SQLite. Но как? –

+0

Посмотрите на мой ответ, после того как вы прослушаете все с помощью java-скрипта, отправьте данные обратно на Java с помощью плагина Cordova и сохраните его в SQLite. – osayilgan

ответ

7

Вы должны добавить интерфейс яваскрипта к вашему 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"); 
+0

Я пробовал это решение. getWritableDatabase(); methot не работает. –

+0

Это делается, если вы используете правильный контекст. –

+0

Я пробовал такой же контекст. Я сохраняю те же данные из JavaScript и Java.Работала Java, но JavaScript не работал. Данные одинаковые данные, база данных с той же базой данных. Вы попробовали свой ответ раньше? –

0

Вы когда-либо предпринять, посмотрите на PhoneGap и Кордова плагин? Плагин Cordova обеспечивает очень сильную связь между Java и веб-браузером и веб-дизайном на Java. И есть уже некоторые плагины с открытым исходным кодом, написанные о регистрации данных, вы можете просто внедрить их в свое приложение.

Посмотрите на эту ссылку: Cordova Plugin

+0

Спасибо за ответ. Я знаю PhoneGap и Кордову. Я хочу создать собственное приложение. –

+0

Плагин Cordova просто предоставляет вам связь между веб-представлением и родной стороной, поэтому это не значит, что у вас нет собственного пользовательского интерфейса, вы можете сделать его 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> 

Android:

web.addJavascriptInterface(new JsObject(), "AndroidFunction"); 

      ... 

    class JsObject{ 
     @JavascriptInterface   
     public void save(String action){ 
      L.d("action:"+action); 
     } 

      public String show(){ 
       return "Hello Android"; 
      } 
    }  
Смежные вопросы