2012-06-01 18 views
9

Quiero que mi aplicación Android use Webview para mostrar un formulario html. Cuando el usuario presiona el botón Enviar, quiere que los pares de nombre/valor sean devueltos a mi programa. ¿Cómo hago esto?Android, Webview, obtenga los datos del formulario

He visto otras preguntas similares, pero no de las respuestas dicen cómo, específicamente, para hacer esto.

Respuesta

0

He encontrado lo que necesitaba. Si fijo action = "forma" en el formulario HTML, entonces puedo interceptar la acción con:. Pares

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

El nombre/valor están en Cadena d

+3

Esto NO funcionará si envía el formulario como método POST. – Nizzy

1

Observe el uso de las interfaces de Javascript dentro de WebView. Por favor, consulte this area of the Android Developers Guide. Básicamente, debe poder comunicarse desde la página al dispositivo con la interfaz de Javascript y dejar que su Actividad WebView sepa cuando se presiona el botón Enviar y enviar sus valores.

+0

"y envíe sus valores de nuevo". Esta es la parte que no puedo entender. Cómo recolectar esos valores y enviarlos. – Xarph

0

Si desea guardar Nombre/Valor pares y están dispuestos a usar jQuery entonces es bastante simple suponiendo que puso jQuery en sus activos de la carpeta que se puede leer en un archivo de:.

getResources().getAssets() 

en el WebViewClient que configure (suponiendo que sustituimos el cliente) usted puede hacer:

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

A continuación, asegúrese de que tiene una JavascriptInterface configurado para su vista web con un método, por ejemplo, se llama 'ReturnJSONFromForm (cadena JSON)' configurado para "MyJInterface" a continuación, cargar el formulario en la página y luego intente lo siguiente:

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

Ahora en su interfaz, simplemente cree un objeto JSON de la cadena resultante y listo. Pares de Nombre/Valor de su formulario.

Serialize no capturará los campos deshabilitados ni enviará botones ... si lo necesita, entonces existe una solución de javascript más compleja, pero es mucho más difícil.