仅在模拟器中使用WebView.loadData()的“网页不可用”

时间:2011-12-07 19:56:36

标签: android android-emulator webview emulation

我正在loadData上调用WebView并以字符串形式传递一些HTML,如下所示:

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

它在我的Galaxy Tab 10.1上工作正常,但WebView显示:

Webpage not available

在模拟器上运行时,所有设置都与我的Galaxy Tab匹配。在清单中设置android.permission.INTERNET没有任何效果,但我不需要该权限,因为我正在渲染内存中的HTML,而不是通过数据连接访问任何内容。

发生了什么事?

3 个答案:

答案 0 :(得分:34)

尝试使用此代码

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

而不是

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

它应该可以工作,因为有时像'%','\','#'这样的字符如果没有正确编码就会产生问题

答案 1 :(得分:27)

2.x平台中loadData()在某些情况下失败(需要转义html),请改用loadDataWithBaseURL()并将null传递给baseUrlhistoryUrl

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

答案 2 :(得分:0)

实际上感谢@Viraj的回答。

Google目前已弃用上述内容,您应该使用此代码:

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