2012-06-01 7 views
9

私のAndroidアプリケーションでWebフォームを使用してHTMLフォームを表示したい。ユーザーが[送信]ボタンを押すと、名前/値のペアが自分のプログラムに送り返されます。これはどうすればいいですか?Android、Webview、提出されたフォームデータを取得

私は他の同様の質問を見ましたが、答えの中では具体的にこれを行う方法を教えていません。

答えて

0

私は必要なものを見つけました。私は、フォームのHTMLにアクション= '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である

+3

POSTメソッドとしてフォームを送信している場合、これは機能しません。 – Nizzy

1

WebView内でJavascriptインターフェイスを使用してください。 this area of the Android Developers Guideをご覧ください。基本的には、Javascriptインターフェイスを使用してページからデバイスに通信でき、送信ボタンが押されたときにWebViewアクティビティに通知して値を送信できるようにする必要があります。

+0

"値を送信してください。 これは私が理解できない部分です。それらの値を収集して送信する方法。 – Xarph

0

あなたは、名前/値を保存したい場合。 。あなたは(あなたがクライアントをオーバーライドと仮定した場合)に設定WebViewClientで

getResources().getAssets() 

:ペアと、それは非常に簡単ですjQueryのを使用して喜んでいる あなたの資産にはjQueryを置くと仮定すると、あなたはからのファイルにそれを読むことができますフォルダあなたはできる:

その後
view.loadUrl("javascript:" + escapedJqueryStringHere); 

、その後、これを試して、ページにフォームをロードし、あなたが「ReturnJSONFromForm(文字列のJSON)」と呼ば例えば方法であなたのWebViewのために設定JavascriptInterfaceは、「MyJInterface」用に設定されていることを確認してください。

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

インターフェイスで、結果の文字列からJSONObjectを作成してください。フォームからの名前/値のペア。

シリアル化では無効なフィールドや送信ボタンはキャプチャされません。必要な場合は、より複雑なjavascriptソリューションが存在しますが、はるかに難しいです。