Carregar arquivo HTML no WebView

188

Eu tenho uma página html local, juntamente com vários outros recursos apontados por ela (arquivos css e bibliotecas Javascript) que eu gostaria de carregar em um WebView. Como conseguir isso ?

Talvez não seja a melhor maneira de proceder, mas ainda estou experimentando.

klaus johan
fonte
para mim funcionou se eu soltasse o ponto html -webView.loadUrl ("file: /// android_asset / filename");
quem
4
Alguma razão para você não querer aceitar a resposta de Joe?
ClasseA
3
webview.loadUrl ("file: ///android_asset/sample.html"); - clique aqui
c49 /

Respostas:

349

A maneira mais fácil provavelmente seria colocar seus recursos da web na pasta de ativos e chamar:

webView.loadUrl("file:///android_asset/filename.html");

Para uma comunicação completa entre Java e Webview, consulte

Atualização: a pasta de ativos geralmente é a seguinte: <project>/src/main/assets Isso pode ser alterado na configuração da pasta de ativos no seu <app>.imlarquivo como:

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” /> Consulte o artigo Onde colocar a pasta de ativos no Android Studio

Joe
fonte
6
Este problema é realmente um FAQ.
precisa saber é o seguinte
2
Você também pode carregá-lo de uma String se for muito adverso ao usar ativos ... (consulte stackoverflow.com/questions/4543349/load-local-html-in-webview )
Joe
24
Isso deve ser marcado como resposta correta, porque realmente é.
gorodechnyj
6
@ SK9 O mesmo se aplica se estiver faltando qualquer outro ativo ou arquivo esperado, como se você alterasse o nome da classe de atividade inicial e não atualizasse AndroidManifest.xmlpara refletir isso. (Pessoalmente, recomendo colocar o caminho do URL / arquivo nos recursos de sequência e acessá-lo a partir daí, para que o caminho esteja com todos os outros dados de sequência do programa, mas isso não esteja diretamente relacionado à questão do recurso / dependência de recursos.)
JAB
7
Para aqueles que não sabem como criar uma pasta de ativos, clique com o botão direito em "app" -> "Novo" -> "Pasta" -> "Pasta de ativos" e clique em "Concluir". O Android Studio criará a pasta de ativos no caminho correto. E você só precisa mover o arquivo html para a nova pasta de ativos. Referência: stackoverflow.com/questions/18302603/…
Yuchao Zhou
27

provavelmente esta amostra pode ajudar:

  WebView lWebView = (WebView)findViewById(R.id.webView);
  File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
  lWebView.loadUrl("file:///" + lFile.getAbsolutePath());
Ajesh
fonte
3
no exemplo lá que têm o html na memória externa, é melhor tê-lo embalado dentro da aplicação
Jonathan García
1
"file: ///" é importante ao usar o arquivo HTML do diretório local do dispositivo. Graças
ralphgabb
5

Nesse caso, usar WebView#loadDataWithBaseUrl()é melhor que WebView#loadUrl()!

webView.loadDataWithBaseURL(url, 
        data,
        "text/html",
        "utf-8",
        null);

url: url / path String apontando para o diretório em que todos os seus arquivos JavaScript e links html têm sua origem. Se nulo, trata-se de: em branco. data: String contendo seu arquivo hmtl, leia com BufferedReader por exemplo

Mais informações: WebView.loadDataWithBaseURL (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)

Khaintt
fonte
3
O que é variável de dados ? Por favor, forneça um exemplo.
IgorGanapolsky
0

A resposta aceita não está funcionando para mim, é isso que funciona para mim

WebSettings webSetting = webView.getSettings();
    webSetting.setBuiltInZoomControls(true);
    webView1.setWebViewClient(new WebViewClient());

   webView.loadUrl("file:///android_asset/index.html");
Jimale Abdi
fonte
Qual é a versão do seu celular?
Jimale Abdi