2011-12-07 10 views
13

estoy llamando loadData en mi WebView y se lleva algo de HTML en forma de una cadena de este modo:'página web no está disponible' con WebView.loadData() sólo en el emulador

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

Funciona bien en mi Galaxy Tab 10.1, pero las pantallas WebView:

Webpage not available

cuando se ejecuta en el emulador con todo lo establecido para que coincida con mi Galaxy Tab. Establecer android.permission.INTERNET en el manifiesto no tiene ningún efecto, aunque no debería necesitar ese permiso ya que estoy renderizando HTML en memoria y no accediendo a nada a través de la conexión de datos.

¿Qué está pasando?

Respuesta

34

Pruebe con este código

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

insted de

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

que debería funcionar, porque a veces personaje como '%', '\', '#' crea un problema si no está correctamente codificado

+1

Gracias Virâj, que acaba de salvar mi vida, me he quedado atrapado en este prob durante un tiempo de registro. +1 por ti (te daría +100 si pudiera). – orchidrudra

+1

Tu respuesta me ayudó, +1 para ti :) – Nermeen

+0

Me ayudó también, Gracias Viraj. También atrapado en este problema +1 para ti. – kamil

26

En 2.x plataformas loadData() falla en algunos casos (requiere que se escape el html), use loadDataWithBaseURL() en su lugar y pase null para baseUrl y historyUrl:

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

esto funcionó para mí. y es probablemente más rápido que "usar URLEncoder y replaceAll regex". –

+0

+1 para mí. Solo un apéndice rápido: debe editar su respuesta y poner 'webview.loadDataWithBaseUrl (null, htmlString," text/html "," utf-8 ", nulo);' ¡Gracias por la ayuda! – leocadiotine

+0

mucho fardjad, puedo ser su esclavo durante 40 años – lomec

0

En realidad, gracias por @Viraj por la respuesta.

Google actualmente en desuso lo anterior y se debe utilizar en su lugar:

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