2015-02-16 4 views
18

zur Webansicht I Android Studio/Gradle bin mit.Laden von HTML-Datei auf Android von Assets Ordnern mit Android Studio

app \ src \ main \ android_asset Ordner haben die Datei mit dem Namen chart.html ..

Ich versuche, diese Datei zu meinen webview wie diese zu laden:

WebView view = new WebView(this); 
view.getSettings().setJavaScriptEnabled(true); 
view.loadUrl("file:///android_asset/chart.html"); 
setContentView(view); 

Aber ich immer bekommen Der Fehler: konnte wegen ERR_FILE_NOT_FOUND nicht geladen werden.

Was fehlt mir hier?

Antwort

41

Der Verzeichnisname Sie sein sollte: enter image description here

Wie in den obigen Bildern gezeigt, klicken Sie einfach mit der rechten Maustaste auf Ihre App-> New-> Folder-> As Ordner setzt

jetzt Ihre setzen .html Datei hier in Vermögenswerte Ordner.

Das ist es. Erledigt.

Rest ist selbe in Code, was Sie getan haben.

WebView view = new WebView(this); 
view.getSettings().setJavaScriptEnabled(true); 
view.loadUrl("file:///android_asset/hello.html"); 
setContentView(view); 
+0

Es funktioniert ohne Aktivierung von Javascript. Und seltsamerweise bezieht sich der Ordner "android_asset" in der URL auf den Ordner "assets" im Projekt. – Lensflare

1

sollte der Verzeichnisname wie diese Vermögenswerte nicht android_assets

android_assets/ darin, nicht android_asset/

+0

android_assets geben Ihnen error.To Ladedatei von Vermögenswerten in Webansicht, Pfad so webview sein sollte .loadUrl ("file: ///android_asset/HtmlCode.html"); –

8

ähnliches Problem:

Ich benutze viele productFlavors mit verschiedenen applicationId.

Wenn ich eine HTML-Datei aus res/raw/file.html zu laden versuchen, erhalte ich eine ClassNotFoundException Nicht Klasse "product.flavor.package.R $ raw"

Die R.java finden Datei hat einen anderen Paketnamen.

Es sieht ist wie Sie können eine URL aus der Datei geladen werden wie: webView.loadUrl ("file: ///android_res/raw/page.html"); weil die WebView versucht, die R.class-Datei mit einem anderen Paketnamen zu verwenden.

Ich nehme an, die ERR_FILE_NOT_FOUND Laden einer HTML-Datei von Assets hat das gleiche Problem, aber Sie sehen die Ausnahme nicht. (webView.loadUrl ("file: ///android_assets/page.html");)

Mit dieser kleinen Arbeit um ich mein Problem lösen:

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); 
    } 

Ich hoffe, das hilft. Stephan

0

Antwort von Gugelhupf aber mit roher Ressource.
Vorteil dieser Lösung: Sie behalten die Übersetzung im Griff!

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(); 
} 
Verwandte Themen