Завантажте HTML-файл у WebView


189

У мене локальна html-сторінка разом з кількома іншими вказаними нею ресурсами (файлами css та бібліотеками Javascript), які я хотів би завантажити в WebView. Як цього можна було досягти?

Можливо, не найкращий спосіб пройти, але я все ще експериментую.


для мене це спрацювало, якщо я скинув крапку html -webView.loadUrl ("файл: /// android_asset / filename");
пам’ятний

4
Будь-яка причина, чому ви не хочете приймати відповідь @ Joe?
ClassA

3
webview.loadUrl ("файл: ///android_asset/sample.html"); - натисніть тут
c49

Відповіді:


350

Найпростішим способом було б, мабуть, помістити свої веб-ресурси в папку активів, а потім зателефонувати:

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

Для повної комунікації між Java та Webview див. Це

Оновлення: Папка активів зазвичай є такою папкою: <project>/src/main/assets Це можна змінити в налаштуваннях конфігурації папки активів у вашому <app>.imlфайлі як:

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” /> Див. Статтю Де розмістити папку активів у Android Studio


6
Ця проблема насправді є FAQ.
shihpeng

2
Ви, мабуть, також можете завантажити його з String, якщо ви дуже зловживаєте використанням активів ... (див. Stackoverflow.com/questions/4543349/load-local-html-in-webview )
Джо

24
Це має бути позначено як правильну відповідь, `адже це насправді є.
gorodechnyj

6
@ SK9 Це ж стосується, якщо будь-який інший актив або очікуваний файл відсутній, наприклад, якщо ви зміните ім'я свого початкового класу діяльності та не оновите, AndroidManifest.xmlщоб це відобразити. (Особисто я рекомендую ввести шлях / URL до файлу в рядкові ресурси та отримати доступ до нього звідти таким чином, що шлях є з усіма іншими рядковими даними для програми, але це насправді не пов'язане безпосередньо з проблемою активу / залежність від ресурсів.)
JAB

7
Для тих, хто не знає, як створити папку активів, клацніть правою кнопкою миші на "додаток" -> "Новий" -> "Папка" -> "Папка активів" та натисніть "Готово". Android Studio створить папку активів правильним шляхом. І вам просто потрібно перемістити файл HTML у нову папку активів. Довідка: stackoverflow.com/questions/18302603 / ...
Yuchao Zhou

28

ймовірно, цей зразок може допомогти:

  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
у прикладі, у якому є html у зовнішній пам'яті, найкраще його упакувати в програму
Джонатан Гарсія

1
"file: ///" важливий при використанні HTML-файлу з каталогу локальних пристроїв. Дякую
ralphgabb

5

У цьому випадку використання WebView#loadDataWithBaseUrl()краще ніж WebView#loadUrl()!

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

url: url / path Рядок, що вказує на каталог, усі ваші JavaScript-файли та HTML-посилання мають своє походження. Якщо нуль, це про: blank. дані: Рядок, що містить ваш hmtl файл, читайте, наприклад, з BufferedReader

Більше інформації: WebView.loadDataWithBaseURL (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)


3
Що дані змінної? Наведіть приклад.
ІгорГанапольський

0

Прийнятий відповідь не працює для мене. Це те, що працює для мене

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

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

Яка версія вашого мобільного телефону?
Джимале Абді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.