6

我正在尝试使用 WebView 从 rss 提要加载解析的 html 数据,但 webview 声称该页面:

“数据:文本/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 中的字符串中传递,标识符为:DEFAULTTEXT。我已经测试了这个类并且 HTML 很好地通过了,它只是没有正确显示。

它在我尝试过的一些网页上运行良好,但在其他网页上运行良好。我将尝试发布一个有效的代码和一个无效的代码。

4

4 回答 4

3

Huuu .... 所以我今天早上打开了我的电脑,它工作得很好。我仍然不知道问题是什么。:/

编辑:没关系。它适用于我尝试显示的某些页面,但不是所有页面。

Edit2:将其换成 loadDataWithBaseURL 就像一个魅力。

于 2010-01-01T17:16:49.367 回答
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);
于 2012-08-12T22:47:24.983 回答
1

我相信 loadData* 的这种零星行为是因为您尝试加载的页面内容是什么。如果它是简单的html,它没有问题。但是,如果它具有诸如 css 之类的组件或其他需要外部信息的功能,它就会退出。我的经验!

于 2010-09-27T08:07:37.520 回答
0

您确定您在 manifest.xml 中定义了正确的权限吗?

于 2010-01-01T16:39:04.687 回答