Objetivo:
Vamos a aprender a crear nuestro primer Webview.
Hay varias formas de hacerlo, pero nos centraremos en la más simple, dando una pautas al final con configuraciones mas avanzadas.
Vemos un resultado final antes.
Código fuente java (/src/com.webview/Principal.java):
[sourcecode language=”java”]
package com.webview;
//importaciones necesarias
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class Principal extends Activity {
//Nuestra vista necesaria para la web
private WebView mWebView;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
//asociamos
mWebView = (WebView) findViewById(R.id.webview);
//cargo un .html que he situado en la carpeta asset/ del proyecto
mWebView.loadUrl("file:///android_asset/ejemploWebview.html");
}
}
[/sourcecode]
Código fuente XML (/res/layout/main.xml):
[sourcecode language=”xml”]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Aplicacion ejemplo de un Webview"
android:padding="4dip"
android:textSize="16sp"
/>
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
/>
</LinearLayout>
[/sourcecode]
Código fuente HTML (/asset/ejemploWebview.html):
[sourcecode language=”html”]
<html>
<!– Los estilos se proyectarán a nuestra aplicacion –>
<body style="text-align:center">
<strong> Ejemplo Webview, Por TutorialAndroid.com </strong> <br>
<p>Este es un ejemplo de página web
con texto e imágenes y links.</p>
<!– Enlace con una imagen de Androide-Feeds –>
<a href="http://www.tutorialandroid.com/feed/">
<img src="http://www.tutorialandroid.com/androidFeed_.png"
height="128" width="128" border="0" alt="RSS"
title="http://www.tutorialandroid.com/feed/"></a>
<p>Link a la web
<a href="http://www.tutorialandroid.com">tutorialandroid.com</a></p>
</body>
</html>
[/sourcecode]
Descárgate el código aquí
Opciones más avanzadas:
- Visionar una web situada en internet (y no en nuestro proyecto).
Para ello debemos sustituir la ruta de carga de la Url por la deseada en el código Java:
[sourcecode language=”java”]
mWebView.loadUrl("http://www.tutorialandroid.com");
[/sourcecode]Y no se puede olvidar proporcionar de conexión a internet a la aplicacion en el Manifest.xml (como hijo del tag <manifest>):
[sourcecode language=”java”]
<uses-permission android:name="android.permission.INTERNET" />
[/sourcecode] - Permitir más compatibilidad con componentes, tal y como Javascript, simulación de cliente Chrome, o aparición de un zoom en caso de ser necesario.
En este caso debemos añadir el siguiente código al método onCreate:
[sourcecode language=”java”]
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
[/sourcecode]
Y definimos una clase, dentro de la nuestra (Principal.java):
final class DemoJavaScriptInterface {[sourcecode language=”java”]
final class DemoJavaScriptInterface {DemoJavaScriptInterface() {
}/**
* No es llamada en la interfaz. Crea un runnable para invocar
* loadUrl en la hebra de la interfaz.
*/
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");
}
});}
}/**
* "alerta" para javascript. Util para depurar javascript.
*/
final class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
result.confirm();
return true;
}
}
[/sourcecode]
como podria hacer q mi aplicacion android realizara consultas a una base de datos propia de una aplicacion web
Buenas Steff,
depende de como quieras “complicar” el asunto. Si los datos que deseas consultar son públicos (por ejemplo, la puntuación de un juego en Android que deseas mostrar, que está almacenada en una base de datos en internet), siempre está la manera rápida de hacerlo:
Este último tipo de arquitectura es usada en aplicaciones como Fast Clicker Game o Cartelera de Cine (disponibles aquí) para guardar y extraer datos de internet, además de en el propio móvil.
Muy buen tutorial básico, muchas gracias !
como puedo hacer que me aparezcan letras tildadas en el webview ?? (el archivo esta guardado en formato UTF-8) Saludos
en ves de ser html puedo poner javascript????
Gracias lo estudiaré, Gracias!!!
Hola.. que buen tutorial…
Te comento: He instalado motion en ubuntu para hacer uso de la webcam como monitoreo, lo que hace este programa es subir un video a http://192.168.xx.xx:8082. He intentado acceder desde mi android con un webView para poder monitorear lo que graba la webcam de mi pc asi:
webView.loadUrl(“http://192.168.xx.xx:8082”);
Pero sencillamente no me muestra nada. Si accedo desde un PC a esa direccion si logro ver el video que esta grabando mi webcam. Agradeceria tu ayuda.
Saludos
revisa que en el Manifest.xml estes dando los permisos a internet, de otra manera no te aparecera, nada, tambien podrias checar la manera en que tramsmite tu webcam, ya que tienes que configurar de una u otra manera
no me sale, tendrias un ejemolo del proyecto con eclipse a mano?
Ante todo, gracias por los tutoriales,
es posible incorporar imagenes de nuestro proyecto?
Gracias
Hola Gonzalo primero felicitarte por tus tutoriales y pedirte si podriamos ponernos en contacto para me ayudaras y guiaras un poco en alguno aspectos si no te supone molestia
Un cordial saludo Abel
en mi web tengo un video mp4 con html y no se reproduce.
Disculpen no saben como permitir que mi aplicacion pueda abrir unicamente un sitio web? Digamos que quiero que abra twitter y no pueda ingresar a ningún otra página
Hola Gonzalo. Tengo una web responsive y quiero convertirla en app. El webview me reconoce automaticamente el diseño responsive al mostrar la web? gracias!
como abro el proyecto? no entiendo donde pongo despues?
Hola, me a gustado mucho el tutorial, y me a servido de mucho.
Pero tengo una duda. ¿Cómo podría hacer para que al apretar un botón en la pantalla principal cargue la webView?
Muchas gracias.
Como se abre el proyecto? puedo abrirlo en el netbeans? me podrian ayudar porfa