我希望我的Android應用程序使用Webview來顯示html表單。當用戶按下提交按鈕時,它需要將名稱/值對發送回我的程序。我該怎麼做呢?Android,Webview,獲取提交的表單數據
我已經看過其他類似的問題,但沒有回覆告訴我具體如何做到這一點。
我希望我的Android應用程序使用Webview來顯示html表單。當用戶按下提交按鈕時,它需要將名稱/值對發送回我的程序。我該怎麼做呢?Android,Webview,獲取提交的表單數據
我已經看過其他類似的問題,但沒有回覆告訴我具體如何做到這一點。
我已經找到了我需要的東西。如果我在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
研究WebView內Javascript接口的使用。請參閱this area of the Android Developers Guide。基本上,您應該能夠使用Javascript界面從頁面與設備進行通信,並讓您的WebView活動知道何時按下提交按鈕併發送其值。
「並將其值發送。」 這是我無法弄清楚的部分。如何收集這些值併發送。 – Xarph
如果你想保存名稱/值對並願意使用jQuery那麼它很簡單 假設你把jQuery的在您的資產目錄,你可以讀入一個文件:
getResources().getAssets()
在您設置(假設你推翻客戶端)的WebViewClient你可以這樣做:
view.loadUrl("javascript:" + escapedJqueryStringHere);
然後,請確保您有配置爲與方法的網頁視圖一個JavascriptInterface,例如,所謂的「ReturnJSONFromForm(字符串JSON)」配置爲「MyJInterface」,那麼形式加載到頁面,然後試試這個:
webview.loadUrl("javascript:MyJInterface.ReturnJSONFromForm($(\"form\").serialize());");
現在,在您的界面中,只需從結果字符串中創建一個JSONObject,然後就可以開始了!來自您的表單的名稱/值對。
Serialize不會捕獲禁用的字段或提交按鈕..如果您需要,那麼存在一個更復雜的JavaScript解決方案,但它更困難。
如果您以POST方式提交表單,這將不起作用。 – Nizzy