2012-06-01 17 views
9

Desidero che la mia applicazione Android utilizzi Webview per visualizzare un modulo html. Quando l'utente preme il pulsante Invia, desidera che le coppie nome/valore vengano inviate al mio programma. Come faccio a fare questo?Android, Webview, vengono inviati i dati del modulo

Ho esaminato altre domande simili ma non le risposte indicano come, in particolare, per fare questo.

risposta

0

Ho trovato ciò di cui avevo bisogno. Se ho impostato action = 'FORM" nel form html, allora posso intercettare l'azione con:. Coppie

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

Il nome/valore sono in Stringa d

+3

Questo non funzionerà se si invia il modulo come metodo POST. – Nizzy

1

Cerca nell'uso delle interfacce Javascript all'interno di WebView. Si prega di vedere this area of the Android Developers Guide. Fondamentalmente, dovresti essere in grado di comunicare dalla pagina al dispositivo con l'interfaccia Javascript e lasciare che la tua attività WebView sappia quando viene premuto il pulsante di invio e inviare i suoi valori sopra.

+0

"e inviare i suoi valori sopra". Questa è la parte che non riesco a capire. Come raccogliere quei valori e inviarli. – Xarph

0

Se si desidera salvare Nome/Valore coppie e sono disposti a usare jQuery, allora è abbastanza semplice supponendo che si mette jQuery nelle vostre risorse la cartella che si può leggere in un file da:.

getResources().getAssets() 

nel WebViewClient di impostare (supponendo che si escludeva il cliente) puoi fare:

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

Quindi, assicuratevi di avere un JavascriptInterface configurato per la visualizzazione web con un metodo, ad esempio, chiamato 'ReturnJSONFromForm (stringa JSON)' configurato per "MyJInterface" quindi caricare il form nella pagina e quindi provare questo:

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

Ora nell'interfaccia, basta creare un JSONObject dalla stringa risultante ed ecco fatto! Nome/valore coppie dal tuo modulo.

Serialize non acquisirà campi disabilitati o pulsanti di invio .. se necessario, allora esiste una soluzione javascript più complessa ma è molto più difficile.

Problemi correlati