我希望我的Android应用程序使用Webview来显示html表单。当用户按下“提交”按钮时,它希望将名称/值对发送回我的程序。我该怎么做?
我已经查看了其他类似的问题,但没有回答说明具体如何做到这一点。
答案 0 :(得分:1)
了解WebView中Javascript接口的使用。请参阅this area of the Android Developers Guide。基本上,您应该能够使用Javascript界面从页面与设备进行通信,并在按下提交按钮时让WebView活动知道并发送其值。
答案 1 :(得分:0)
我找到了我需要的东西。如果我在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));
}
}
名称/值对在字符串d。
中答案 2 :(得分:0)
如果你想保存名称/值对并愿意使用jQuery,那么它非常简单。 假设您将jQuery放在资源文件夹中,您可以将其读入以下文件:
getResources().getAssets()
在您设置的WebViewClient中(假设您覆盖了客户端),您可以执行以下操作:
view.loadUrl("javascript:" + escapedJqueryStringHere);
然后,确保为您的webview配置了一个JavascriptInterface,其中包含一个方法,例如,为“MyJInterface”配置名为“ReturnJSONFromForm(String json)”,然后将表单加载到页面中,然后尝试:
webview.loadUrl("javascript:MyJInterface.ReturnJSONFromForm($(\"form\").serialize());");
现在在您的界面中,只需从结果字符串创建一个JSONObject即可!表单中的名称/值对。
Serialize不会捕获禁用的字段或提交按钮..如果你需要,那么存在一个更复杂的javascript解决方案,但它要困难得多。