我想知道file:///
从android中的assets文件夹加载html文件时的含义
它是指向根目录的绝对路径名吗?
顺便说一下,我在关于phonegap的教程中看到了这一点。
答案 0 :(得分:37)
file:///
是一个URI(统一资源标识符),它简单地区分了我们都知道的标准URI - http://
。
它确实意味着在任何环境中指向根目录的绝对路径名,但在Android的上下文中,告诉Android运行时说“此处,目录{{1}”是一种惯例。 }有一个名为www
的文件位于项目的 root 的index.html
文件夹中。
这就是资产在运行时加载的方式,例如,assets
小部件通过指定WebView
URI确切地知道加载嵌入式资源文件的位置。
考虑代码示例:
file:///
这里有一个非常容易犯的错误,有些人会将其推断为WebView webViewer = (WebView) findViewById(R.id.webViewer);
webView.loadUrl("file:///android_asset/www/index.html");
,注意URI中的复数资产,并想知道为什么嵌入式资源不起作用!
答案 1 :(得分:14)
如果有人使用AndroidStudio,请确保将资源文件夹放在
中应用/ SRC /主/资产强>
。目录
答案 2 :(得分:13)
URI "file:///android_asset/"
指向YourProject/app/src/main/assets/
。
注意:android_asset/
使用单数(资产),src/main/assets
使用复数(资产)。
假设您有一个要在WebView中显示的文件YourProject/app/src/main/assets/web_thing.html
。您可以这样参考:
WebView webViewer = (WebView) findViewById(R.id.webViewer);
webView.loadUrl("file:///android_asset/web_thing.html");
上面的代码段可能位于Activity类中,可能位于onCreate
方法中。
这是android项目整体目录结构的guide,帮助我弄清楚这个答案。
答案 3 :(得分:3)
实际上名为file:///android_asset/index.html
file:///android_assets/index.html
会给你一个构建错误。
考虑将问题标题编辑为
file:///android_asset/index.html 意味着什么
。
答案 4 :(得分: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无法正常工作)。
对我有用的解决方案:
我把/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"); (没有 s )
答案 5 :(得分:0)
它的文件:/// android_asset / ...不是文件:/// android_assets / ...注意复数资产是错误的即使您的文件名是资产