2015-02-16 10 views
18

Używam Androida Studio/Gradle.Ładowanie pliku html do wyświetlenia strony internetowej na Androidzie z folderu zasobów przy użyciu Android Studio

app \ src \ main \ Folder android_asset ma plik o nazwie chart.html ..

Próbuję załadować ten plik do mojego WebView tak:

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

ale zawsze błąd: nie można załadować, ponieważ ERR_FILE_NOT_FOUND.

Czego mi tu brakuje?

Odpowiedz

41

Nazwa katalogu powinny być trwałe nie android_assets

Czy tak: enter image description here

Jak pokazano na powyższym zdjęciu, kliknij prawym przyciskiem myszy na swoją aplikację -> Nowy-> Folder-> As ustawia Folder

Teraz umieścić plik .html tutaj aktywów folderów.

To wszystko. Gotowe.

Pozostaje taki sam kod, co zrobiłeś.

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

Działa bez włączania javascript. Co dziwne, folder "android_asset" w adresie URL odnosi się do folderu "assets" w projekcie. – Lensflare

1

Nazwa katalogu powinna być android_assets/ w nim, a nie android_asset/

+0

android_assets daje error.To plik załadować z aktywów w WebView, ścieżka powinna być jak ten WebView .loadUrl ("file: ///android_asset/HtmlCode.html"); –

8

podobny problem:

używam wielu productFlavors o różnej applicationId.

Jeśli próbuję załadować plik HTML/RES/surowego plik.html dostaję ClassNotFoundException nie znaleźliśmy klasa "product.flavor.package.R $ Raw"

R.java plik ma inną nazwę pakietu.

Wygląda na to, że nie można załadować adresu URL z pliku, takiego jak: webView.loadUrl ("file: ///android_res/raw/page.html"); , ponieważ WebView próbuje użyć pliku R.class i ma inną nazwę pakietu.

Zakładam, że ERR_FILE_NOT_FOUND z ładowania pliku html z zasobów ma ten sam problem, ale nie widzisz wyjątku. (webView.loadUrl ("file: ///android_assets/page.html");)

Dzięki tej małej obejść I rozwiązać mój 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); 
    } 

Mam nadzieję, że to pomaga. Stephan

0

Odpowiedź z Gugelhupf, ale z surowcem.
Zaleta tego rozwiązania: kontynuujesz tłumaczenie!

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(); 
} 
Powiązane problemy