xba*_*esx 2 android urlencode android-webview
首先,我要说这只是Android 2及更早版本的问题(4似乎没有受到影响,我没有测试3).
我有一个WebView从字符串加载HTML.HTML看起来像这样:
<html>
<head>
<link rel='stylesheet' type='text/css' href='http://www.robotsidekick.com/test.css?rev=0' />
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
您可以看到css文件如下所示:
body {
font-family: "Lucida Console", "Lucida Sans Typewriter", Monaco, "Bitstream Vera Sans Mono", monospace;
}
h1 {
border-bottom: 3px solid #ccc;
}
Run Code Online (Sandbox Code Playgroud)
该WebView代码如下所示:
final WebView webview = new WebView(this);
setContentView(webview);
final String result = "<html><head><link rel='stylesheet' type='text/css' href='http://www.robotsidekick.com/test.css?rev=0' /></head><body><h1>Hello World</h1></body></html>";
webview.loadData(result, "text/html", Encoding.UTF_8.toString());
Run Code Online (Sandbox Code Playgroud)
怎么了
我看到html代码,WebView好像我已经将mime类型设置为纯文本.

我期待什么(以及Android 4.x中会发生什么
我看到了html WebView
有一些事情必须是真实的,以显示我看到的症状:
href="http://www.robotsidekick.com/test.css?rev=0"而不是href="test.css"(但是如果它是真正的css文件href="http://www.thisisnotarealurl.fake/test.css?rev=0导致同样的问题则无关紧要)?rev=0,但它无关紧要还要注意以下内容没有什么区别:
"而不是'HTMLlink标签贴近或不贴身<!DOCTYPE html>到HTML中将webview.loadData行更改为:
webview.loadData(URLEncoder.encode(result).replaceAll("\\+", " "), "text/html", Encoding.UTF_8.toString());
Run Code Online (Sandbox Code Playgroud)
解决了这个问题.对我来说,一个?没有编码的相对路径不会导致问题,而一个没有编码的假网址会导致问题,这似乎很奇怪?.
还发现奇怪的是,WebView在Android的后续版本中我们不再需要编码我们的html了吗?这听起来很可疑.
| 归档时间: |
|
| 查看次数: |
4177 次 |
| 最近记录: |