Webview carga html desde el directorio de activos

142

Estoy tratando de cargar una página html desde el directorio de activos. Intenté esto, pero falla.

public class ViewWeb extends Activity {  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        WebView wv;  
        wv = (WebView) findViewById(R.id.webView1);  
        wv.loadUrl("file:///android_asset/aboutcertified.html");   // fails here
        setContentView(R.layout.webview);  
    }  
}

Realmente no recibo ningún error revelador en LogCat ...

AndyD273
fuente
Vea mi otra respuesta: stackoverflow.com/a/8694428/341091
Martin

Respuestas:

296

Está obteniendo WebView antes de configurar la vista de Contenido, por lo que el wv probablemente sea nulo.

public class ViewWeb extends Activity {  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);
            setContentView(R.layout.webview);  
            WebView wv;  
            wv = (WebView) findViewById(R.id.webView1);  
            wv.loadUrl("file:///android_asset/aboutcertified.html");   // now it will not fail here
        }  
    }
Estanque Robby
fuente
Eso fue todo. Para empezar, lo tenía así, intenté cambiarlo, pero ahora funciona ... Genial.
AndyD273
En una nota al margen, ¿el blanco sobre negro es un aspecto estándar en Android? Todas las vistas de mi tabla son blancas sobre negro de forma predeterminada, pero mi html está configurado para negro sobre blanco ... Puedo cambiarlas, pero no estoy seguro de cuál cambiar.
AndyD273
en mi página web mobile contactus page.html la página contiene una dirección de correo electrónico, estoy usando webview en la aplicación de Android y configuré para abrir esa página weburl contactus .html en ese usuario, haga clic en el correo electrónico desconocido error de esquema de URL
Harsha
¿Cómo ejecutar HTML FILE usando el servidor en la aplicación de Android?
16

Siempre que esté creando actividad, debe agregar setcontentview(su diseño) después de la súper llamada. Porque setcontentviewvincula xml a tu actividad, esa es la razón por la que estás recibiendo nullpointerexception.

 setContentView(R.layout.webview);  
 webView = (WebView) findViewById(R.id.webView1);
 wv.loadUrl("file:///android_asset/xyz.html");
duggu
fuente
6
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView wb = new WebView(this);
        wb.loadUrl("file:///android_asset/index.html");
        setContentView(wb);
    }


keep your .html in `asset` folder
BIJU KV
fuente
2
El documento de Andoid se refiere a assets developer.android.com/tools/projects/index.html en cualquiera de los casos no funciona, a menos que la carpeta de mi (s) activo (s) esté en la carpeta incorrecta actualmente enmain
Pawel Cioch
Lo malo fue que tenía una copia del mismo proyecto en una ubicación diferente, y estaba agregando una copia incorrecta, pero esta respuesta con la imagen es la mejor stackoverflow.com/questions/18302603/…
Pawel Cioch
0

Descargue el código fuente desde aquí ( Abra el archivo html de los activos de Android )

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:background="#FFFFFF"
 android:layout_height="match_parent">

<WebView
 android:layout_width="match_parent"
 android:id="@+id/webview"
 android:layout_height="match_parent"
 android:layout_margin="10dp"></WebView>
</RelativeLayout>

MainActivity.java

package com.deepshikha.htmlfromassets;
 import android.app.ProgressDialog;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

WebView webview;
 ProgressDialog progressDialog;

@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 init();
 }

private void init(){
 webview = (WebView)findViewById(R.id.webview);
 webview.loadUrl("file:///android_asset/download.html");
 webview.requestFocus();

progressDialog = new ProgressDialog(MainActivity.this);
 progressDialog.setMessage("Loading");
 progressDialog.setCancelable(false);
 progressDialog.show();

webview.setWebViewClient(new WebViewClient() {

public void onPageFinished(WebView view, String url) {
 try {
 progressDialog.dismiss();
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 });
 }
 }
Deepshikha Puri
fuente