Загрузка существующего .html-файла с помощью android WebView

Я попробовал образцы, демонстрации из кодов 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"); 

То только эмулятор андроида 2.2 API уровня 8 может загрузить файл, вероятно, другие старые версии показывают ту же ошибку. Я что-то упускаю?

Есть ли способ загрузки существующего .html-файла в пакет приложения, который работает во всех версиях API?

Хорошо, это была моя очень глупая ошибка. Я отправляю ответ здесь на случай, если у кого-то такая же проблема.

Правильный путь для файлов, хранящихся в папке с ресурсами, – file:///android_asset/* (без папки «s» для активов, о которой я всегда думал, что она должна иметь «s»).

И, mWebView.loadUrl("file:///android_asset/myfile.html"); Работает на всех уровнях API.

Я до сих пор не mWebView.loadUrl("file:///android_res/raw/myfile.html"); , почему mWebView.loadUrl("file:///android_res/raw/myfile.html"); Работает только на уровне API 8. Но теперь это не имеет значения.

Вставьте свой .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" /> 

Добавление фонового кода в действие

 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. 

Скопируйте и вставьте свой .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); 

Если ваша структура должна быть такой:

/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-файл вручную, а затем использовать loadData или loadDataWithBaseUrl для WebView для его отображения.

Также убедитесь, что вы не забыли:

<uses-permission android:name="android.permission.INTERNET" />

Intereting Posts
Невозможно отобразить изображения данных URI в приложении Android PhoneGap Связь между разрешениями Android и группами разрешений NullPointer, когда findViewById () в SimpleCursorAdapter В адаптере gridview getView (position == 0) вызывается слишком много раз для измерения макета, когда setImageBitmap () в загрузчике Макет должен идти вверх, когда мягкая клавиатура появилась перед представлением в Android Как обнаружить, когда MotionEvent.ACTION_MOVE закончен Внедрение «более быстрого» backToTop – ListView Проецирование непроектированных радарных изображений в osmdroid Могу ли я получить трассировку стека C ++ при сбое приложения Android? Вам нужно сохранить высокий балл для Android-игры Android: использование PopupMenu в API уровня 9 ClassLoader ссылается на неизвестный путь: / data / app / Параллельная загрузка с одной и той же служебной службой Когда устанавливать хранилище ключей и когда устанавливать только сертификат, завернутый в хранилище ключей Любые простые примеры с использованием roboguice с фрагментами в android?