Próbowałem próbek, demonstracji z kodów Google i innych zasobów WebView
, ale kiedy próbuję to zrobić we własnym kodzie, nie działa to dla mnie.
Chcę załadować to, myfile.html
co umieściłem w folderze zasobów i używając:
private WebView myWebView;
myWebView.loadUrl("file:///android_assets/myfile.html");
Na emulatorze pokazuje błąd
file:///android_assets/myfile.html
Nie można załadować strony internetowej pod adresem : Żądany plik nie został znaleziony./android_assets/myfile.html
Kiedy umieszczam ten plik w res/raw/
folderze i używam:
myWebView.loadUrl("file:///android_res/raw/myfile.html");
wtedy prawdopodobnie tylko emulator Android 2.2 API level 8 może załadować plik, inne starsze wersje pokazują ten sam błąd. Czy coś mi brakuje?
Czy istnieje sposób na załadowanie istniejącego pliku .html w pakiecie aplikacji, który działa na wszystkich wersjach API?
raw
nie działało. Chciałbym mieć zastosowanie dlaraw-de
,raw-fr
i tak dalej. Teraz muszę to zrobić sam.wklej plik .html do folderu zasobów w folderze projektu. i utwórz plik xml w folderze układu z poniższym kodem: 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" />
dodaj kod fol w aktywności
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.
źródło
Jeśli twoja struktura powinna wyglądać następująco:
/assets/html/index.html
/assets/scripts/index.js
/assets/css/index.css
Następnie po prostu zrób ( Android WebView: obsługa zmian orientacji )
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()); }
Upewnij się, że dodałeś
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); }
Następnie po prostu użyj adresów 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">
źródło
Skopiuj i wklej swój plik .html w folderze zasobów projektu i dodaj poniższy kod do swojej aktywności 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);
źródło
Możesz odczytać plik html ręcznie, a następnie użyć
loadData
lubloadDataWithBaseUrl
metod WebView, aby go wyświetlić.źródło
Kompilacja debugowania różni się od uwalniania jednego, więc:
Rozważ taką strukturę pliku projektu [w tym przypadku w przypadku zestawu do debugowania ]:
src | debug | assets | index.html
Powinieneś wywołać index.html w swoim WebView na przykład:
web.loadUrl("file:///android_asset/index.html");
Tak więc, w przypadku zespołu wydania, powinno wyglądać następująco:
src | release | assets | index.html
src | main | assets | index.html
źródło