2012-06-01 33 views
9

我希望我的Android應用程序使用Webview來顯示html表單。當用戶按下提交按鈕時,它需要將名稱/值對發送回我的程序。我該怎麼做呢?Android,Webview,獲取提交的表單數據

我已經看過其他類似的問題,但沒有回覆告訴我具體如何做到這一點。

回答

0

我已經找到了我需要的東西。如果我在HTML表單中設置動作='表」,然後我可以攔截與行動:

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

名稱/值對的字符串d

+3

如果您以POST方式提交表單,這將不起作用。 – Nizzy

1

研究WebView內Javascript接口的使用。請參閱this area of the Android Developers Guide。基本上,您應該能夠使用Javascript界面​​從頁面與設備進行通信,並讓您的WebView活動知道何時按下提交按鈕併發送其值。

+0

「並將其值發送。」 這是我無法弄清楚的部分。如何收集這些值併發送。 – Xarph

0

如果你想保存名稱/值對並願意使用jQuery那麼它很簡單 假設你把jQuery的在您的資產目錄,你可以讀入一個文件:

getResources().getAssets() 

在您設置(假設你推翻客戶端)的WebViewClient你可以這樣做:

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

然後,請確保您有配置爲與方法的網頁視圖一個JavascriptInterface,例如,所謂的「ReturnJSONFromForm(字符串JSON)」配置爲「MyJInterface」,那麼形式加載到頁面,然後試試這個:

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

現在,在您的界面中,只需從結果字符串中創建一個JSONObject,然後就可以開始了!來自您的表單的名稱/值對。

Serialize不會捕獲禁用的字段或提交按鈕..如果您需要,那麼存在一個更復雜的JavaScript解決方案,但它更困難。