在WebView中显示Android资产文件?

我已经看到了关于从资产提供WebView页面的问题的各种讨论,其中没有一个看起来是确定的。

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

我发现wv.loadUrl(“file:///android_asset/html_no_copy/demo_welcome.html”)显示该文件没问题,但是demo_welcome.html中的链接,无论是本地(没有url前缀文件名)还是绝对 – 相同表格如同送入loadUrl – 不起作用。 他们在视图上显示“网页不可用”错误。

WebView wv = (WebView)this.findViewById(R.id.splashWebView); wv.loadUrl("file:///android_asset/html_no_copy/https://stackoverflow.com/questions/5320288/displaying-android-asset-files-in-a-webview/test.html"); // Works 

要么

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

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

 CLICK HERE

OR HERE

我知道我可以通过编写内容提供商来解决这个问题,但这看起来很极端。

我希望这可以从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:     Demo Html    

Testing One Two Three

CLICK HERE

OR HERE

https://stackoverflow.com/questions/5320288/displaying-android-asset-files-in-a-webview/test.html: Insert title here

TEST.HTML

而不是loadUrl,尝试使用loadDataWithBaseURL方法:

 wv.loadDataWithBaseURL("fake://not/needed", html, mimeType, encoding, "");