android - 在 WebView 中显示 Android Assets 文件?

标签 android webkit

我已经看到各种关于从 Assets 中提供 WebView 页面的问题的讨论,但似乎没有一个是确定的。

我希望能够使用 webview 来显示存储在项目 Assets 中的 html(和包含的 css)文件。

我发现 wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html") 可以正常显示该文件,但 demo_welcome.html 中的链接可以是本地的(文件名前没有 url)或绝对的- 与输入到 loadUrl 的表格相同 - 不起作用。他们在 View 上显示“网页不可用”错误。

WebView wv = (WebView)this.findViewById(R.id.splashWebView);
wv.loadUrl("file:///android_asset/html_no_copy/test.html"); // Works

wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html"); // Works

但 demo_welcome.html 中的以下链接均不起作用:

<a href="test.html">CLICK HERE</a><p>
<a href="file:///android_asset/html_no_copy/test.html">OR HERE</a>

我知道我可以通过编写内容提供程序来解决这个问题,但这似乎很极端。

我希望它能够从 SDK 1.6 (4) 开始工作。

有谁知道这是否可以仅使用 HTML 来完成,还是需要编写一些代码来加载数据?

最佳答案

好吧,我发现了一些似乎有效的东西(在 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");

这是文件内容:

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>

关于android - 在 WebView 中显示 Android Assets 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5320288/

相关文章:

css - 如何使带有 CSS 的 HTML Slider 留在框中?

iphone - 如何使用 CSS 为 iphone 实现此布局

javascript - Cocoa - 防止在 WebKit 中缓存 Javascript - Safari Beta 4 错误?

android - 如何从直接下载链接在android webview中下载文件

android - 接收器未被 AlarmManager 调用 - Android

ios - 如何防止WKWebView在应用程序发送到后台后被清空

html - WebKit on tap 透明度不起作用

java - 如何使 "Hierarchy Viewer"在真实设备中工作?

javascript - 清除phonegap中的cookie/禁用phonegap使用cookie

java - 如何将 "Data.Json"文件从 Assets 保存到内部存储,然后将其用于读/写