J'utilise Android Studio/Gradle.
le dossier app\src\main\Android_asset contient le fichier chart.html ..
J'essaie de charger ce fichier sur ma vue Web comme ceci:
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///Android_asset/chart.html");
setContentView(view);
Mais j'ai toujours le message d'erreur: impossible de charger car ERR_FILE_NOT_FOUND.
Qu'est-ce que j'oublie ici?
Le nom du répertoire doit être assets not Android_assets
Fait comme ça:
Comme indiqué dans les images ci-dessus, cliquez avec le bouton droit de la souris sur votre application-> Nouveau-> Dossier-> Dossier Actifs
Maintenant, placez votre fichier .html ici dans le dossier assets .
C'est tout. Terminé.
Rester est identique en code ce que vous avez fait.
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///Android_asset/hello.html");
setContentView(view);
Problème similaire:
J'utilise beaucoup de productFlavors avec différentes applicationId.
Si je tente de charger un fichier html à partir de res/raw/file.html, je reçois un ClassNotFoundException Je n'ai pas trouvé la classe "product.flavor.package.R $ raw"
Le fichier R.Java a un nom de package différent.
On dirait que vous ne pouvez pas charger une URL depuis un fichier du type: WebView.loadUrl ("file: ///Android_res/raw/page.html"); parce que WebView essaye d’utiliser le fichier R.class avec un nom de paquet différent.
Je suppose que le problème posé par ERR_FILE_NOT_FOUND lors du chargement d'un fichier html à partir d'actifs est identique, mais vous ne voyez pas l'exception .
Avec ce petit travail, je résous mon problème:
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);
}
J'espère que cela aide . Stephan
Réponse de Gugelhupf mais avec une ressource brute.
L'avantage de cette solution: la traduction continue de fonctionner!
WebView webView = findViewById(R.id.about_text);
try {
InputStream inputStream = getResources().openRawResource(R.raw.about);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append("\n");
}
webView.loadDataWithBaseURL(null, stringBuilder.toString(), "text/html", "UTF-8", null);
} catch (IOException e) {
e.printStackTrace();
}