Pergunta

Eu tentei amostras, demos do Google Codes e outros recursos com WebView, mas quando tento fazer isso no meu próprio código, não funciona para mim.

Eu quero carregar myfile.html que eu coloquei 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 carregado como: o arquivo solicitado não foi encontrado. /android_assets/myfile.html

Quando eu coloquei esse arquivo para res/raw/ pasta e usando:

myWebView.loadUrl("file:///android_res/raw/myfile.html");

Somente o Emulador Android 2.2 API Nível 8 pode carregar o arquivo provavelmente, outras versões mais antigas mostram o mesmo erro. Estou esquecendo de algo?

Existe alguma maneira de carregar um arquivo .html existente no pacote de aplicativos que funciona em todas as versões da API?

Foi útil?

Solução

Ok, esse foi o meu erro muito estúpido. Eu posto a resposta aqui, caso alguém tenha o mesmo problema.

O caminho correto para arquivos armazenados na pasta de ativos é file:///android_asset/* (sem a pasta "s" para ativos que eu estava sempre pensando que deveria ter um "s").

E, mWebView.loadUrl("file:///android_asset/myfile.html"); trabalha sob todos os níveis de API.

Eu ainda não descobri o porquê mWebView.loadUrl("file:///android_res/raw/myfile.html"); Funciona apenas no nível 8. API 8, mas isso não importa agora.

Outras dicas

Cole o seu arquivo .html na pasta de ativos da pasta do projeto. e crie um arquivo XML na pasta de layout com o código fol: 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 na 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.

Se sua estrutura deve ser assim:

/assets/html/index.html

/assets/scripts/index.js

/assets/css/index.css

Então apenas faça ( Android WebView: Alterações de orientação para manuseio )

    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);
    }

Em seguida, basta 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">

Copie e cole seu arquivo .html na pasta Ativo do seu projeto e adicione o código abaixo em sua atividade no 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);

Você pode ler o arquivo html manualmente e depois usar loadData ou loadDataWithBaseUrl Métodos da WebView para mostrá -lo.

o Compilação de depuração é diferente do liberar um, então:

Considere sua estrutura de arquivo de projeto como essa [Este caso, se para uma Assembléia de depuração]:

src
  |
  debug
      |
      assets
           |
           index.html

Você deve ligar para o index.html em seu WebView como:

WebView web=(WebView)findViewById(R.id.web);
web.loadUrl("file:///android_asset/index.html");

O layout:

<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"/>

Então, para a montagem do lançamento, deve ser como:

src
  |
  release
        |
        assets
             |
             index.html  
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top