Android,Webview,获取表单数据

我想我的Android应用程序使用Webview来显示一个HTML表单。 当用户按下“提交”button时,它需要将名称/值对发送回我的程序。 我该怎么做呢?

我已经看了其他类似的问题,但没有答复,具体如何做到这一点。

Solutions Collecting From Web of "Android,Webview,获取表单数据"

在WebView中查看使用Javascript接口。 请参阅Android开发者指南的这个区域 。 基本上,您应该能够使用Javascript界面​​从页面与设备进行通信,并让您的WebView活动知道何时按下提交button并发送其值。

我find了我需要的。 如果我在表单html中设置action ='FORM',那么我可以用下面的方法拦截这个动作:

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

名称/值对在stringd中。

如果你想保存名称/值对,并愿意使用jQuery,那么它很简单。 假设你把你的资产文件夹中的jQuery,你可以读取到一个文件:

 getResources().getAssets() 

在你设置的WebViewClient中(假设你忽略了客户端),你可以这样做:

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

然后,确保你有一个为你的webviewconfiguration了一个JavascriptInterface的方法,例如为“MyJInterface”configuration的“ReturnJSONFromForm(String json)”,然后加载到页面,然后试试这个:

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

现在在你的界面中,只需从结果string中创build一个JSONObject,然后就可以开始了! 名称/值对从您的表单。

序列化不会捕获禁用的字段或提交button..如果你需要,那么一个更复杂的JavaScript解决scheme存在,但它要困难得多。