Java Android WebView: XHR von file:///android_asset/...

Kantholy

Lt. Junior Grade
Registriert
Aug. 2006
Beiträge
323
Frage in die Runde, vor allem an die Android Programmierer in der Runde:

Wie bekomm ich einen xmlhttprequest von ner file:/// url aus nem webview auf ne webseite hin?

Hintergrund ist natürlich eine App die ich gerne bauen möchte, und da vor allem das Styling als auch das dynamische Contenthandling mit einer HTML5 Oberfläche wesentlich leichter fällt als mit nativem Androidcode möchte ich hier gerne auf einen WebView setzen der eine lokale html Seite aus dem assets Ordner lädt...

Jetzt habe ich aber das Problem, dass ich diesen natürlich gerne mit Content füllen möchte und der wird von einer JSON API geliefert...

Also hab ich natürlich mein Glück probiert und versucht das über einen XMLHTTPREQUEST GET "http://www.google.de/" im Javascript zu realisieren aber das wird einfach nicht ausgeführt, eine lokale URL geht natürlich... sieht also ganz nach einem Securityproblem aus...

Gibts da irgendeine Möglichkeit das zum Umgehen oder eine TLD zu whitelisten?

hier mal mein bisschen Java Code aus der onCreate Funktion

Code:
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
view.getSettings().setAllowUniversalAccessFromFileURLs(true);
view.getSettings().setPluginState(WebSettings.PluginState.ON);
 
 
view.addJavascriptInterface(new JavascriptInterface(this), "Android");
view.setWebChromeClient(new WebChromeClient());
view.loadUrl("file:///android_asset/login.html");
 
 
setContentView(view)
 
Schau dir mal Phonegap an. Das hatte mir vor nen monat genau das selbe Problem wie bei dir abgenommen. Das ist im Endeffekt auch nichts anderes als ne WebView die erstellt wird, nur halt eine modifizierte Version. Das coole an Phonegap ist, dass du einmal das Projekt aufsetzt und am Ende es für WindowsPhone, Android, iOS usw. exportieren kannst. Vielleicht ist das ja was für dich.

http://phonegap.com/
 
Phonegap kenne ich bereits... aber eigentlich wollte ich das gerade vermeiden, ich wollte trotzdem so "nah" wie möglich an der Androidprogrammierung bleiben...
Vorteil von meinem Ansatz wäre halt, dass ich bestimmte Activities in HTML realisieren könnte und manche wiederum auf Androidbasis..

So wie das in der Phonegap Doku aber aussieht kann ich vielleicht trotzdem "hybrid" fahren... Der Export nach iOS oder WindowsPhone ist mir relativ latte, soll schon eine Android App mit Android Look'n'Feel werden :)
 
Einfach die HTML Seite im Browser (Chrome) öffnen und in den Entwicklertools vom Browser gucken was passiert. Vermutlich bekommst du wegen dem Cross-Origin Resource Sharing (cors) Probleme. Man kann nicht Problemlos Ajax-Abfragen über verschiedene "Origins" hinweg machen. Da wird gerne mal vom Browser (WebView) die Antwort geblockt.

Phonegap bzw.Cordova ist halt auch nur ein WebView, man bekommt aber eine "Brücke" dazu, um mit JavaScript auf Hardware zuzugreifen. Ich hab noch nicht versucht, das mit Nativer App zu mischen, könnte aber interessant sein :D
 
Zurück
Oben