Загрузить файл HTML в WebView


189

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

Возможно, не лучший способ продолжить, но я все еще экспериментирую.


для меня это сработало, если я отбросил точку html -webView.loadUrl ("file: /// android_asset / filename");
quemeful

4
Любая причина, почему вы не хотите принять ответ @ Джо?
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
Эта проблема действительно часто задаваемые вопросы.
Shihpeng

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

24
Это должно быть помечено как правильный ответ, потому что это действительно так.
Городечный

6
@ SK9 То же самое применимо, если отсутствует какой-либо другой актив или ожидаемый файл, например, если вы измените имя своего начального класса активности и не обновите его, AndroidManifest.xmlчтобы отразить это. (Лично я бы рекомендовал указывать путь URL / файла в строковых ресурсах и обращаться к нему оттуда таким образом, чтобы этот путь был со всеми остальными строковыми данными для программы, но это не имеет прямого отношения к вопросу об активе / ресурсная зависимость.)
JAB

7
Для тех, кто не знает, как создать папку ресурсов, щелкните правой кнопкой мыши «приложение» -> «Создать» -> «Папка» -> «Папка активов» и нажмите «Готово». Android Studio создаст папку ресурсов по правильному пути. И вам просто нужно переместить ваш HTML-файл в новую папку ресурсов. Ссылка: stackoverflow.com/questions/18302603/…
Ючао Чжоу

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 имеют свое происхождение. Если ноль, это о: пусто. data: строка, содержащая ваш файл 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.