添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I want to know what does file:/// mean while loading a html file from the assets folder in android

Is it an absolute path name which points to the root directory?

I saw this in the tutorial for phonegap by the way.

file:/// is a URI (Uniform Resource Identifier) that simply distinguishes from the standard URI that we all know of too well - http:// .

It does imply an absolute path name pointing to the root directory in any environment, but in the context of Android, it's a convention to tell the Android run-time to say " Here, the directory www has a file called index.html located in the assets folder in the root of the project ".

That is how assets are loaded at runtime, for example, a WebView widget would know exactly where to load the embedded resource file by specifying the file:/// URI.

Consider the code example:

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

A very easy mistake to make here is this, some would infer it to as file:///android_assets, notice the plural of assets in the URI and wonder why the embedded resource is not working!

"asset" verses "assets" was an error that took me hours to solve on my first PhoneGap/Android project. Your solution helped me realize what I was doing wrong. – Brian Stinar Jul 15, 2013 at 0:18 @MichaelLevy see tools.ietf.org/html/draft-kerwin-file-scheme-06 on Page 4 for your answer. It is a widely adopted de-facto standard for Uri naming conventions in regards to filesystems. Also, see superuser.com/questions/352133/… as well. – t0mm13b Apr 20, 2015 at 23:58

If someone uses AndroidStudio make sure that the assets folder is placed in

  • app/src/main/assets

    directory.

    The URI "file:///android_asset/" points to YourProject/app/src/main/assets/.

    Note: android_asset/ uses the singular (asset) and src/main/assets uses the plural (assets).

    Suppose you have a file YourProject/app/src/main/assets/web_thing.html that you would like to display in a WebView. You can refer to it like this:

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

    The snippet above could be located in your Activity class, possibly in the onCreate method.

    Here is a guide to the overall directory structure of an android project, that helped me figure out this answer.

    It took me more than 4 hours to fix this problem. I followed the guide from http://docs.phonegap.com/en/2.1.0/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android

    I'm using Android Studio (Eclipse with ADT could not work properly because of the build problem).

    Solution that worked for me:

  • I put the /assets/www/index.html under app/src/main/assets directory. (take care AndroidStudio has different perspectives like Project or Android)

  • use super.loadUrl("file:///android_asset/www/index.html"); instead of super.loadUrl("file:///android_assets/www/index.html"); (no s)

  •