Android - wie abfangen, eine POST im android-WebViewClient auf API-Ebene 4
Ich habe eine WebViewClient
an meinem WebView
etwa so:
webView.setWebViewClient(new MyWebViewClient());
Hier ist meine Umsetzung MyWebViewClient
:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webView.loadUrl(url);
return true;
}
}
Gebe ich die WebView
eine URL zu laden über loadUrl()
. Wenn ich einen link (a href...
) in der Seite, mein shouldOverrideUrlLoading
- Methode aufgerufen wird und ich Sie abfangen kann den link klicken.
Jedoch, wenn ich ein Formular, dessen Methode POST
die shouldOverrideUrlLoading
- Methode nicht aufgerufen wird.
Bemerkte ich ein ähnliches Problem hier: http://code.google.com/p/android/issues/detail?id=9122die zu suggerieren scheint, überschreiben postUrl
in meinem WebView
. Jedoch, diese API ist erst ab API-level 5.
Was kann ich tun, wenn ich auf API-Ebene 4? Gibt es eine andere Möglichkeit zum abfangen von form-Beiträge?
InformationsquelleAutor der Frage manisha | 2010-09-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist bekanntes Problem, dass
shouldOverrideUrlLoading
nicht fangen POST. Sehen http://code.google.com/p/android/issues/detail?id=9122 für details.Verwenden BEKOMMEN! Ich persönlich habe mit der POST, da ich erwartete eine Beschränkung der GET-Parameter (d.h. die Länge der URL), aber ich habe gerade erfolgreich bestanden 32000 bytes, die über GET lokal ohne Probleme.
InformationsquelleAutor der Antwort Mike Keskinov
Tun, die Sie wirklich brauchen, um eine POST? Wenn Sie möchten, Griff formdata lokal, warum nicht ein Stück von javascript behandeln Ihre form und Oberfläche mit "native" java-code mit addJavascriptInterface. E. g.
Ihre Brücke kann man jede Klasse im Grunde, und Sie sollten in der Lage sein, um Zugriff auf dessen Methoden, die direkt von javascript aus. E. g.
Ihre html - /javascript könnte das so Aussehen:
InformationsquelleAutor der Antwort Ivo van der Wijk
Ich denke, man kann überschreiben
onLoadResource(WebView view, String url)
ausWebViewClient
. Diese Funktion wird Hinzugefügt, die auf API-EBENE 1.Diese Funktion wird aufgerufen, wenn
WebView
lädt die angegebene Ressource an, die durch die angegebene url. Ressourcen umfassenjs
css
iframe
eingebettet url. Code-Beispiel wie diese:InformationsquelleAutor der Antwort wangzhengyi