2011-12-07 7 views
13

Dzwonię loadData na moim WebView i przepuszczenie go niektóre HTML w postaci ciągu tak:„Strona internetowa jest niedostępna” z WebView.loadData() Tylko w emulatorze

webView.loadData(htmlString, "text/html", "utf-8"); 

Współpracuje z mój Galaxy Tab 10.1, ale WebView wyświetlacze:

Webpage not available

gdy uruchomiony na emulatorze z wszystko skonfigurować, aby dopasować mój Galaxy Tab. Ustawienie w manifeście android.permission.INTERNET nie przynosi żadnego efektu, chociaż nie powinienem potrzebować tego uprawnienia, ponieważ renderuję kod HTML w pamięci i nie uzyskuję dostępu do niczego przez połączenie danych.

Co się dzieje?

Odpowiedz

34

Spróbuj z tym kodem

webView.loadData(URLEncoder.encode(htmlString).replaceAll("\\+"," "), "text/html", "utf-8"); 

insted

webView.loadData(htmlString, "text/html", "utf-8"); 

powinno działać, ponieważ czasami charakter jak '%', '\', '#' stwarza problem, jeśli nie jest prawidłowo kodowane

+1

Dzięki Viraj, po prostu uratował mi życie, utknąłem na tym prob dla czasu dziennika. +1 dla ciebie (dałbym ci +100, gdybym mógł). – orchidrudra

+1

Twoja odpowiedź pomogła mi, +1 dla ciebie :) – Nermeen

+0

Pomógł mi również, dzięki Viraj. Też utknąłem na tym prob. +1 dla ciebie. – kamil

26

w 2.x platform loadData() zawodzi w niektórych przypadkach (wymaga html być uciekł), użyj loadDataWithBaseURL() i zamiast przejść null dla baseUrl i historyUrl:

webView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null); 
+0

to działało dla mnie. i jest prawdopodobnie szybsze niż "używanie URLEncoder i replaceAll regex". –

+0

+1 dla mnie. Szybki addendum: powinieneś edytować swoją odpowiedź i wpisać 'webview.loadDataWithBaseUrl (null, htmlString," text/html "," utf-8 ", null);' Dzięki za pomoc! – leocadiotine

+0

thnx dużo fardjad, mogę być twoim niewolnikiem przez 40 lat – lomec

0

Właściwie dzięki za @Viraj na odpowiedź.

Google obecnie przestarzałe wyżej i należy użyć zamiast tego:

webView.loadData(URLEncoder.encode(mAdvertisement.getContent(), "UTF-8").replaceAll("\\+", " "), "text/html", "UTF-8");