Loading html file to webview on android from assets folder using Android Studio
Solution 1
The directory name should be assets not android_assets
Do like this:
As shown in the above pics just right click on your app->New->Folder->Assets Folder
Now put your .html file here in assets folder.
That's it. Done.
Remaining is same in code what you did.
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/hello.html");
setContentView(view);
Solution 2
Similar problem :
I use many productFlavors with different applicationId.
If I attempt to load a html file from res/raw/file.html I get a ClassNotFoundException Didn't find class "product.flavor.package.R$raw"
The R.java file has a different Package name.
It look's like you can't load a URL from file like : webView.loadUrl( "file:///android_res/raw/page.html"); because the WebView try to use the R.class file with has a different package name.
I assume the ERR_FILE_NOT_FOUND from loading a html file from assets has the same problem but you don't see the exception. ( webView.loadUrl( "file:///android_assets/page.html" ); )
With this small work around I solve my problem :
try {
AssetManager assetManager = context.getAssets();
InputStream stream = assetManager.open("page.html");
BufferedReader r = new BufferedReader(new InputStreamReader(stream));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line).append("\n");
}
webView.loadDataWithBaseURL(null, total.toString(), "text/html", "UTF-8", null);
} catch (Exception xxx) {
Log.e(TAG, "Load assets/page.html", xxx);
}
I hope this helps. Stephan
Related videos on Youtube
Badr Hari
Updated on July 09, 2022Comments
-
Badr Hari almost 2 years
I'm using Android Studio/Gradle.
app\src\main\android_asset folder has the file called chart.html..
I'm trying to load this file to my webview like this:
WebView view = new WebView(this); view.getSettings().setJavaScriptEnabled(true); view.loadUrl("file:///android_asset/chart.html"); setContentView(view);
But I always get the error: could not be loaded because ERR_FILE_NOT_FOUND.
What am I missing here?
-
Lensflare over 6 yearsIt works without enabling javascript. And strangely, the "android_asset" folder in the URL refers to the "assets" folder in the project.
-
DAG almost 3 yearsYes, it appears wrong but same for me, "android_asset" refers to the folder called assets. How messed up!