27

I'm new to Android development.

I want to load a html file into a webview.

Note that there are so many relevant questions on SO like this, but they all deal with getting **.html* from assets folder.

But I want to load html file from local folder, say "D://abc.html" because if my html is around 10Mb then corresponding apk size also goes upto 10mb.

Any help appreciated.

EDIT

I tried webView.loadUrl("file:///D:/Projects/myWebsite/index.html");

but it gives Web page not available and File not found error.

4 Answers 4

47

You can use:


   WebView webView = // ...

   webView.loadUrl("file:///myPath/myFile.html");

In an Android application, files can be read from 3 types of locations:

  • Internal storage: Each app has its own, file names are relative to this location. URL takes form file:///myFolder/myFile.html

  • External storage: Needs permission and may not always be available. Get the root folder by calling Environment.getExternalStorageDirectory(). So, construct the URL using: String url = "file:///" + Environment.getExternalStorageDirectory().toString() + File.separator + "myFolder/myFile.html"

  • Assets: Stored in the apk. Read-only access. URL takes form file:///android_asset/myFolder/myFile.html (See also Loading an Android Resource into a WebView)

Sign up to request clarification or add additional context in comments.

8 Comments

webView1.loadUrl("file:///C:/Users/myName/Desktop/e-magzine/index.html"); but it gives Web page not available. File not found message.
Android is a Linux implementation, so Windows-style paths won't work. Your path is relative to the home folder of your app, but I'll look for a reference that discusses this further
I got what you said. So going by this logic, file:/// should be referring to root folder of project. So how do I use files from external resources i.e. from local drive?
Instead of a "local drive," there are 3 types of file locations in Android. I've updated my answer with examples on constructing the URL for each.
But in any case, my html files and corresponding resources i.e. images, videos, etc. will be placed within the folder and hence *.apk size will be approx. equal to size of HTML which can go upto 50Mb also.
|
5

In Android 4.4 KitKat, a "Not allowed to load local resource: file:///.." is thrown. arise when loadURL and the only alternative I've found is "loadDataWithBaseURL".

webView.loadDataWithBaseURL("file:///android_asset/demo/",
                             tmpDocumentText,"text/html", "UTF-8", null);

1 Comment

wbHelp.loadUrl("file:///android_asset/Help.html"); works in 5.1+ not sure if you need write external storage if it's internal
3

WebView has loadData method http://developer.android.com/reference/android/webkit/WebView.html

All you need to do is reading the file into String then feed it to WebView using loadData.

Comments

0

either one can use this way to load file specifically if the file is present within android studio project (pls note android_res is res folder actually and should not be replaced)

webView.loadUrl("file:///android_res/drawable/FILENAME.EXTENSION");

but if that is not working please try another way of loading file like

webView.loadDataWithBaseURL("file:///android_asset/demo/",tmpDocumentText,
                         "text/html", "UTF-8", null);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.