2012-06-01 18 views
9

Chcę, aby moja aplikacja na Androida korzystała z podglądu strony internetowej do wyświetlania formularza html. Kiedy użytkownik naciśnie przycisk Wyślij, chce, aby pary nazwa/wartość zostały odesłane do mojego programu. Jak mam to zrobic?Android, Webview, otrzymuj dane formularza zgłoszeniowego

Przyjrzałem się innym podobnym pytaniom, ale nie odpowiedziom, w jaki sposób konkretnie to zrobić.

Odpowiedz

0

Znalazłem to, czego potrzebowałem. Jeżeli ustawić action = "Form” w html formy, wtedy mogę przechwycić akcję z. Pary

 public void onLoadResource (WebView view, String url){ 
     int index = url.indexOf("FORM?"); 
     if (index != -1){ 
      String d = URLDecoder.decode(url.substring(index+5)); 
     } 
    } 

nazwa/wartość są w smyczkowy d

+3

To NIE będzie działać, jeśli formularz jest wysyłany jako POST. – Nizzy

1

Zobacz, jak korzystać z interfejsów JavaScript w WebView. Zobacz this area of the Android Developers Guide. Zasadniczo powinieneś być w stanie komunikować się ze stroną do urządzenia za pomocą interfejsu Javascript i powiadomić swoją aktywność w WebView, gdy przycisk przesyłania zostanie naciśnięty i przesłać jego wartości.

+0

"i wyślij jej wartości." To jest część, której nie mogę rozgryźć. Jak zebrać te wartości i wysłać je. – Xarph

0

jeśli chcesz zapisać nazwa/wartość par i są chętni do korzystania z jQuery to jest to całkiem proste Zakładając umieścić jQuery w swoich aktywów folderu można go odczytać w pliku z:.

getResources().getAssets() 

w WebViewClient się ustawienie (zakładając, że overrode klienta) możesz zrobić:

view.loadUrl("javascript:" + escapedJqueryStringHere); 

Następnie upewnij się, że masz JavascriptInterface skonfigurowany dla WebView ze sposobem, na przykład, o nazwie „ReturnJSONFromForm (json String)” skonfigurowany dla „MyJInterface”, a następnie załadować formularz na stronie, a następnie spróbuj tego:

webview.loadUrl("javascript:MyJInterface.ReturnJSONFromForm($(\"form\").serialize());"); 

Teraz w interfejsie wystarczy utworzyć obiekt JSONObject z wynikowego łańcucha i gotowe! Pary Nazwa/Wartość z Twojego formularza.

Serialize nie przechwytuje nieaktywnych pól ani nie przesyła przycisków. Jeśli tego potrzebujesz, to istnieje bardziej złożone rozwiązanie javascript, ale jest o wiele trudniejsze.