Android,Webview,获取提交的表单数据

时间:2012-06-01 00:14:18

标签: android forms webview submit

我希望我的Android应用程序使用Webview来显示html表单。当用户按下“提交”按钮时,它希望将名称/值对发送回我的程序。我该怎么做?

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

3 个答案:

答案 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解决方案,但它要困难得多。