2010-01-01 22 views
6

Ich versuche, die analysierte HTML-Daten aus einem RSS-Feed mit einem WebView, aber die Webansicht behauptet zu laden, dass die Seite:WebView lädt keine Daten?

„data: text/html; utf-8 [Die html Ich bin versuchen, anzuzeigen] "

ist nicht verfügbar.

alt text

Ich finde es seltsam, dass es scheint, die HTML-Daten in die URL zu setzen, wenn ich es nur wollen, um es anzuzeigen.

Hier ist mein Code jetzt für die Webansicht:

Bundle data = getIntent().getExtras(); 

WebView webview = new WebView(this); 
setContentView(webview); 

webview.loadData(data.getString("DEFAULTTEXT"), "text/html", "utf-8"); 

Wenn der HTML-Code in einem String im Bundle mit der Kennung übergeben wurde: Defaulttext. Ich habe die Klasse getestet und der HTML-Code wurde übergeben gut, es wird nur nicht korrekt angezeigt.

Es funktioniert gut auf einigen der Webseiten, die ich versucht habe, aber nicht andere. Ich werde versuchen, den Code von einem zu veröffentlichen, der funktioniert und einer, der nicht funktioniert.

+0

Ich habe auch dieses Problem. Haben Sie jemals eine Lösung gefunden? Ich lese in eine Java-Zeichenfolge ein und es wird nicht angezeigt. Aber wenn ich in eine HTML-Datei kopiere und einfügen, die ich mit der Datei: ///assets/my.html URL öffne, öffnet es sich gut. Also weiß ich, dass es den HTML-Code rendern kann, aber es mag es nicht, wenn es in meinem generierten String ist. – GrkEngineer

+0

Das gleiche Problem hier, einige Seiten funktionieren, einige nicht ... – pambuk

+0

Tatsächlich löste loadDataWithBaseURL das Problem. – pambuk

Antwort

3

Huuu .... also habe ich heute Morgen meinen Computer eingeschaltet und es hat perfekt funktioniert. Ich weiß immer noch nicht, was das Problem war. :/

Bearbeiten: Macht nichts. Es funktioniert auf einigen, aber nicht auf allen Seiten, die ich anzeigen möchte.

Edit2: Swapping für loadDataWithBaseURL funktioniert wie ein Charme.

+0

Probly ein Glitch im Emulator. Froh, dass es funktioniert –

+0

Oh, Moment mal, es funktioniert auf der Hälfte der Webseiten, die ich anzeigen möchte. Arg .. – GuyNoir

+0

Mine arbeitete auf der ganzen Linie und hörte dann auf, für alles zu arbeiten. loadDataWithBaseURL funktioniert jetzt, hoffe, dass es nicht so mysteriös bricht – Martyn

0

Sind Sie sicher, dass Sie die richtigen Berechtigungen in der manifest.xml definiert haben?

+0

Ich habe Internet-Berechtigungen, Audio-Status und Telefonstatus ist da noch ein ich würde brauchen? – GuyNoir

1

Ich glaube, dieses sporadische Verhalten von loadData * ist aufgrund dessen, was der Inhalt der Seite ist, die Sie laden möchten. Wenn es einfach HTML ist, hat es kein Problem. Aber wenn es Komponenten wie CSS oder andere Funktionen hat, die externe Informationen benötigen, wird es gerettet. Meine Erfahrung!

1

Wie gesagt, wenn Sie Zeichen wie '%', '\', '#' in Ihrem HTML haben, muss es maskiert werden, was loadData nicht automatisch zu tun scheint.

loadDataWithBaseURL statt loadData entkommt und scheint dies zu beheben. Verwenden Sie einfach null für baseUrl und historyUrl. So wird der Beispielcode in der Frage geändert in:

Bundle data = getIntent().getExtras(); 

WebView webview = new WebView(this); 
setContentView(webview); 

webview.loadDataWithBaseURL(null,data.getString("DEFAULTTEXT"), "text/html", "utf-8",null);