21

file:///我想知道从android中的assets文件夹加载html文件是什么意思

它是指向根目录的绝对路径名吗?

顺便说一句,我在 phonegap 的教程中看到了这一点。

4

6 回答 6

41

file:///是一个 URI(统一资源标识符),它简单地区别于我们都非常熟悉的标准 URI - http://.

它确实意味着在任何环境中都指向根目录的绝对路径名,但在 Android 的上下文中,约定告诉 Android 运行时说“这里,该目录www有一个名为的文件index.html位于项目的assets”。

这就是在运行时加载资产的方式,例如,一个小部件将通过指定URIWebView来确切地知道在哪里加载嵌入的资源文件。file:///

考虑代码示例:

WebView webViewer = (WebView) findViewById(R.id.webViewer);
webView.loadUrl("file:///android_asset/www/index.html");

一个很容易犯的错误是,有些人会推断为 as file:///android_assets,注意 URI 中资产的复数形式,并想知道为什么嵌入的资源不起作用!

于 2012-08-14T23:08:11.573 回答
18

如果有人使用 AndroidStudio,请确保将 assets 文件夹放置在

  1. 应用程序/src/main/assets

    目录。

于 2014-09-02T21:08:18.233 回答
16

URI"file:///android_asset/"指向YourProject/app/src/main/assets/.

注意:android_asset/使用单数(assets)和src/main/assets使用复数(assets)。

假设您有一个YourProject/app/src/main/assets/web_thing.html想要在 WebView 中显示的文件。你可以这样引用它:

WebView webViewer = (WebView) findViewById(R.id.webViewer);
webView.loadUrl("file:///android_asset/web_thing.html");

上面的代码片段可能位于您的Activity类中,也可能位于onCreate方法中。

这是一个android项目整体目录结构的指南,它帮助我找出了这个答案。

于 2016-04-12T19:21:04.363 回答
4

它实际上被称为file:///android_asset/index.html

file:///android_assets/index.html会给你一个构建错误。

于 2014-01-20T19:13:00.247 回答
0

我花了4个多小时来解决这个问题。我遵循了http://docs.phonegap.com/en/2.1.0/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android的指南

我正在使用 Android Studio(由于构建问题,带有 ADT 的 Eclipse 无法正常工作)。

对我有用的解决方案:

  1. 我把 /assets/www/index.html 放在 app/src/main/assets 目录下。(注意 AndroidStudio 有不同的视角,如 Project 或 Android)

  2. 使用 super.loadUrl("file:/// android_asset /www/index.html"); 而不是 super.loadUrl("file:/// android_assets /www/index.html"); (没有

于 2015-03-09T08:47:55.847 回答
0

是 file:/// android_asset /... 不是 file:/// android_assets /... 注意 assets 的复数是错误的,即使你的文件名是 assets

于 2017-03-08T19:33:11.730 回答