Я пробовал образцы, демонстрации из кодов Google и других ресурсов WebView
, но когда я пытаюсь сделать это в своем собственном коде, у меня это не работает.
Я хочу загрузить то, myfile.html
что я поместил в папку с ресурсами, и используя:
private WebView myWebView;
myWebView.loadUrl("file:///android_assets/myfile.html");
На эмуляторе отображается ошибка
file:///android_assets/myfile.html
Не удалось загрузить веб-страницу по адресу : Запрошенный файл не найден./android_assets/myfile.html
Когда я помещаю этот файл в res/raw/
папку и использую:
myWebView.loadUrl("file:///android_res/raw/myfile.html");
тогда только эмулятор Android 2.2 API уровня 8 может загрузить файл, вероятно, другие более старые версии показывают ту же ошибку. Я что-то упускаю?
Есть ли способ загрузить существующий файл .html в пакет приложения, который работает во всех версиях API?
raw
не получилось. Я бы использовать дляraw-de
,raw-fr
и так далее. Теперь я должен это сделать сам.вставьте файл .html в папку с ресурсами в папке проекта. и создайте XML-файл в папке с макетом со следующим кодом: my.xml:
<WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" />
добавить код Fol в действие
setContentView(R.layout.my); WebView mWebView = null; mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("file:///android_asset/new.html"); //new.html is html file name.
источник
Если ваша структура должна быть такой:
/assets/html/index.html
/assets/scripts/index.js
/assets/css/index.css
Тогда просто сделайте ( Android WebView: обработка изменений ориентации )
if(WebViewStateHolder.INSTANCE.getBundle() == null) { //this works only on single instance of webview, use a map with TAG if you need more webView.loadUrl("file:///android_asset/html/index.html"); } else { webView.restoreState(WebViewStateHolder.INSTANCE.getBundle()); }
Убедитесь, что вы добавили
WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { webSettings.setAllowFileAccessFromFileURLs(true); webSettings.setAllowUniversalAccessFromFileURLs(true); }
Тогда просто используйте URL-адреса
<html> <head> <meta charset="utf-8"> <title>Zzzz</title> <script src="../scripts/index.js"></script> <link rel="stylesheet" type="text/css" href="../css/index.css">
источник
Скопируйте и вставьте ваш .html-файл в папку с ресурсами вашего проекта и добавьте приведенный ниже код в свое действие onCreate ().
WebView view = new WebView(this); view.getSettings().setJavaScriptEnabled(true); view.loadUrl("file:///android_asset/**YOUR FILE NAME**.html"); view.setBackgroundColor(Color.TRANSPARENT); setContentView(view);
источник
Вы можете прочитать html-файл вручную, а затем использовать
loadData
илиloadDataWithBaseUrl
методы WebView, чтобы показать его.источник
Отладки сборник отличается от выпуска одной, так:
Рассмотрим файловую структуру вашего проекта таким образом [ этот случай для сборки отладки ]:
src | debug | assets | index.html
Вы должны вызвать index.html в свой WebView, например:
web.loadUrl("file:///android_asset/index.html");
Итак, для сборки Release это должно быть примерно так:
src | release | assets | index.html
src | main | assets | index.html
источник