我已经看到了关于从资产提供WebView页面的问题的各种讨论,其中没有一个看起来是确定的.
我希望能够使用webview显示存储在项目资产中的html(和包含的css)文件.
我发现wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html")显示该文件没问题,但是demo_welcome.html中的链接,无论是本地(没有url前缀文件名)还是绝对 - 相同form for fed to loadUrl - 不起作用.他们在视图上显示"网页不可用"错误.
WebView wv = (WebView)this.findViewById(R.id.splashWebView);
wv.loadUrl("file:///android_asset/html_no_copy/test.html"); // Works
Run Code Online (Sandbox Code Playgroud)
要么
wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html"); // Works
Run Code Online (Sandbox Code Playgroud)
但是demo_welcome.html中的以下链接都不起作用:
<a href="test.html">CLICK HERE</a><p>
<a href="file:///android_asset/html_no_copy/test.html">OR HERE</a>
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过编写内容提供商来解决这个问题,但这看起来很极端.
我希望这可以从SDK 1.6(4)开始工作.
有没有人知道这是否可以用HTML完成,还是需要克隆一些代码来加载数据?
Mes*_*one 28
好吧,我发现了一些似乎有用的东西(在1.6和2.2上),尽管有一个警告说它会递归.
我还发现第一页和第二页内的css样式表链接都可以在没有以下拦截的情况下工作.奇怪,它让我有点紧张.思考?
这是代码:
WebView wv = (WebView)this.findViewById(R.id.splashWebView);
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
});
wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html");
Run Code Online (Sandbox Code Playgroud)
这是文件内容:
demo_welcome.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Demo Html</title>
<link rel="stylesheet" type="text/css" href="demo.css" />
</head>
<body>
<H1>Testing One Two Three</H1>
<a href="test.html">CLICK HERE</a><p>
<a href="file:///android_asset/html_no_copy/test.html">OR HERE</a>
</body>
</html>
test.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="test.css" />
<title>Insert title here</title>
</head>
<body>
<H1>TEST.HTML</H1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
而不是loadUrl,尝试使用loadDataWithBaseURL方法:
wv.loadDataWithBaseURL("fake://not/needed", html, mimeType, encoding, "");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54719 次 |
| 最近记录: |