file:///
我想知道从android中的assets文件夹加载html文件是什么意思
它是指向根目录的绝对路径名吗?
顺便说一句,我在 phonegap 的教程中看到了这一点。
file:///
我想知道从android中的assets文件夹加载html文件是什么意思
它是指向根目录的绝对路径名吗?
顺便说一句,我在 phonegap 的教程中看到了这一点。
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 中资产的复数形式,并想知道为什么嵌入的资源不起作用!
如果有人使用 AndroidStudio,请确保将 assets 文件夹放置在
应用程序/src/main/assets
目录。
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项目整体目录结构的指南,它帮助我找出了这个答案。
它实际上被称为file:///android_asset/index.html
file:///android_assets/index.html
会给你一个构建错误。
我花了4个多小时来解决这个问题。我遵循了http://docs.phonegap.com/en/2.1.0/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android的指南
我正在使用 Android Studio(由于构建问题,带有 ADT 的 Eclipse 无法正常工作)。
对我有用的解决方案:
我把 /assets/www/index.html 放在 app/src/main/assets 目录下。(注意 AndroidStudio 有不同的视角,如 Project 或 Android)
使用 super.loadUrl("file:/// android_asset /www/index.html"); 而不是 super.loadUrl("file:/// android_assets /www/index.html"); (没有)
是 file:/// android_asset /... 不是 file:/// android_assets /... 注意 assets 的复数是错误的,即使你的文件名是 assets