我正在尝试使用a从rss Feed加载已解析的html数据 WebView,但webview声称该页面:
“data:text / html; utf-8,[我正在尝试显示的HTML]”
不可用。
我觉得奇怪的是它似乎把html数据放入了 url,当我只是想让它显示它时。
以下是我对webview的代码:
Bundle data = getIntent().getExtras();
WebView webview = new WebView(this);
setContentView(webview);
webview.loadData(data.getString("DEFAULTTEXT"), "text/html", "utf-8");
HTML已经在Bundle中的字符串中传递了 identifier:DEFAULTTEXT。我已经测试了类,并且传递了HTML 很好,它只是没有正确显示。
它在我试过的一些网页上运行良好,但其他网页却没有。我会尝试发布一个有效的代码和一个没有代码的代码。
答案 0 :(得分:3)
Huuu ....所以我今天早上打开电脑,效果很好。我还是不知道问题是什么。 :/
编辑:没关系。它适用于我尝试显示的部分页面,但不是所有页面。
Edit2:将其交换为loadDataWithBaseURL就像魅力一样。
答案 1 :(得分:2)
如上所述,当HTML中包含'%','\','#'等字符时,需要对其进行转义,而loadData似乎并不会自动执行。
loadDataWithBaseURL而不是loadData确实转义,似乎解决了这个问题。只需对baseUrl和historyUrl使用null。因此问题中的示例代码更改为:
Bundle data = getIntent().getExtras();
WebView webview = new WebView(this);
setContentView(webview);
webview.loadDataWithBaseURL(null,data.getString("DEFAULTTEXT"), "text/html", "utf-8",null);
答案 2 :(得分:1)
我相信loadData *的这种偶发行为是因为您尝试加载的页面内容是什么。如果它是简单的html它没有问题。但如果它有像css或其他需要外部信息的功能的组件,它将会纾困。 我的经历!
答案 3 :(得分:0)
您确定您在manifest.xml中定义了正确的权限吗?