Eu tentei amostras, demos de códigos do Google e outros recursos com WebView
, mas quando tento fazer no meu próprio código, não funciona para mim.
Quero carregar o myfile.html
que coloco na pasta de ativos e usando:
private WebView myWebView;
myWebView.loadUrl("file:///android_assets/myfile.html");
No emulador mostra erro
A página da web em
file:///android_assets/myfile.html
não pôde ser carregada como: O arquivo solicitado não foi encontrado./android_assets/myfile.html
Quando coloco esse arquivo na res/raw/
pasta e uso:
myWebView.loadUrl("file:///android_res/raw/myfile.html");
então, apenas o emulador Android 2.2 API nível 8 pode carregar o arquivo provavelmente, outras versões anteriores mostram o mesmo erro. Estou esquecendo de algo?
Existe alguma maneira de carregar um arquivo .html existente no pacote do aplicativo que funcione em todas as versões da API?
raw
não funcionou. Eu teria uso pararaw-de
,raw-fr
e assim por diante. Agora eu tenho que fazer isso sozinho.cole seu arquivo .html na pasta de ativos da pasta do seu projeto. e crie um arquivo xml na pasta de layout com o seguinte código: 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" />
adicionar código fol em atividade
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.
fonte
Se sua estrutura deve ser assim:
/assets/html/index.html
/assets/scripts/index.js
/assets/css/index.css
Depois é só fazer ( Android WebView: lidar com as mudanças de orientação )
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()); }
Certifique-se de adicionar
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); }
Então é só usar urls
<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">
fonte
Copie e cole seu arquivo .html na pasta de ativos de seu projeto e adicione o código abaixo em sua atividade em 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);
fonte
Você pode ler o arquivo html manualmente e então usar os métodos
loadData
ouloadDataWithBaseUrl
do WebView para exibi-lo.fonte
A compilação de depuração é diferente da versão , então:
Considere a estrutura de arquivos do seu projeto como esta [ neste caso, se for um conjunto de depuração ]:
src | debug | assets | index.html
Você deve chamar index.html em seu WebView como:
web.loadUrl("file:///android_asset/index.html");
Assim por diante, para a montagem do Release, deve ser assim:
src | release | assets | index.html
src | main | assets | index.html
fonte