Załaduj plik HTML do WebView


189

Mam lokalną stronę HTML wraz z kilkoma innymi wskazanymi przez nią zasobami (pliki css i biblioteki JavaScript), które chciałbym załadować do WebView. Jak można to osiągnąć?

Być może nie jest to najlepszy sposób na postępowanie, ale wciąż eksperymentuję.


dla mnie zadziałało, jeśli upuściłem kropkę html -webView.loadUrl ("file: /// android_asset / filename");
cichy

4
Jest jakiś powód, dla którego nie chcesz zaakceptować odpowiedzi @ Joe?
Klasa A

3
webview.loadUrl („file: ///android_asset/sample.html”); - kliknij tutaj
c49

Odpowiedzi:


350

Najłatwiejszym sposobem byłoby prawdopodobnie umieszczenie zasobów internetowych w folderze zasobów, a następnie wywołanie:

webView.loadUrl("file:///android_asset/filename.html");

Aby uzyskać pełną komunikację między Javą a Webview, zobacz to

Aktualizacja: folder zasobów to zwykle następujący folder: <project>/src/main/assets Można go zmienić w ustawieniach konfiguracji folderu zasobów w <app>.imlpliku jako:

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” /> Zobacz artykuł Gdzie umieścić folder zasobów w Android Studio


6
Ten problem jest naprawdę często zadawanym pytaniem.
shihpeng

2
Prawdopodobnie możesz również załadować go z ciągu, jeśli bardzo nie lubisz korzystać z zasobów ... (patrz stackoverflow.com/questions/4543349/load-local-html-in-webview )
Joe

24
To powinno być oznaczone jako poprawna odpowiedź, bo tak naprawdę jest.
gorodechnyj

6
@ SK9 To samo dotyczy sytuacji, gdy brakuje jakiegokolwiek innego zasobu lub oczekiwanego pliku, na przykład jeśli zmienisz nazwę początkowej klasy aktywności i nie aktualizujesz, AndroidManifest.xmlaby to odzwierciedlić. (Osobiście polecam umieszczenie ścieżki adresu URL / pliku w zasobach łańcucha i dostęp do niego stamtąd, tak aby ścieżka zawierała wszystkie pozostałe dane łańcucha dla programu, ale tak naprawdę nie jest to bezpośrednio związane z kwestią zasobu / zależność od zasobów.)
JAB

7
Jeśli nie wiesz, jak utworzyć folder zasobów, kliknij prawym przyciskiem myszy „aplikacja” -> „Nowy” -> „Folder” -> „Folder zasobów” i kliknij „Zakończ”. Android Studio utworzy folder zasobów we właściwej ścieżce. Musisz tylko przenieść plik HTML do nowego folderu zasobów. Odniesienie: stackoverflow.com/questions/18302603/…
Yuchao Zhou

28

prawdopodobnie ta próbka może pomóc:

  WebView lWebView = (WebView)findViewById(R.id.webView);
  File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
  lWebView.loadUrl("file:///" + lFile.getAbsolutePath());

3
w tamtym przykładzie, który ma html w pamięci zewnętrznej, najlepiej jest go spakować w aplikacji
Jonathan García

1
„file: ///” jest ważny, gdy używasz pliku HTML z lokalnego katalogu urządzenia. Dzięki
ralphgabb,

5

W takim przypadku korzystanie WebView#loadDataWithBaseUrl()jest lepsze niż WebView#loadUrl()!

webView.loadDataWithBaseURL(url, 
        data,
        "text/html",
        "utf-8",
        null);

url: url / path Ciąg wskazujący na katalog wszystkie pliki JavaScript i linki HTML mają swoje pochodzenie. Jeśli null, to około: puste. data: Łańcuch zawierający plik hmtl, odczytany na przykład za pomocą BufferedReader

Więcej informacji: WebView.loadDataWithBaseURL (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)


3
Co to jest zmienna danych ? Podaj przykład.
IgorGanapolsky

0

Odpowiedź zaakceptowana nie działa dla mnie. To właśnie dla mnie działa

WebSettings webSetting = webView.getSettings();
    webSetting.setBuiltInZoomControls(true);
    webView1.setWebViewClient(new WebViewClient());

   webView.loadUrl("file:///android_asset/index.html");

Jaka jest wersja Twojego telefonu komórkowego?
Jimale Abdi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.