我正在loadData
上调用WebView
并以字符串形式传递一些HTML,如下所示:
webView.loadData( htmlString, "text/html", "utf-8" );
它在我的Galaxy Tab 10.1上工作正常,但WebView
显示:
Webpage not available
在模拟器上运行时,所有设置都与我的Galaxy Tab匹配。在清单中设置android.permission.INTERNET
没有任何效果,但我不需要该权限,因为我正在渲染内存中的HTML,而不是通过数据连接访问任何内容。
发生了什么事?
答案 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
传递给baseUrl
, historyUrl
:
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");