Tutoriales‎ > ‎

Llamar un activity de pagina web.

publicado a la‎(s)‎ 14 oct. 2009 23:50 por Adrian Barajas   [ actualizado el 3 nov. 2012 12:10 ]
Una función muy utilizada es mandar llamar un Activity que contenga un web browser para visualizar una pagina web especifica en la red o cargar una pagina estática incluida en nuestra misma aplicación.

Existen dos maneras de implementar esta funcionalidad, la primera es mandar llamar un Intent y solicitar una aplicación que soporte el servicio, esto se ejecuta fuera del activity actual. La segunda opción es implementar en nuestra misma aplicación un Activity que soporte la visualización de la pagina Web. En esta ocasión mostraremos el segundo método.

En nuestro ejemplo cargaremos una pagina estática incluida en nuestra misma aplicación en este caso es la pagina de ayuda de la aplicación.

Los elementos que vamos a requerir para implementar la funcionalidad indicada son : 
  • Definición de la interface para mostrar la página.
  • Una clase que controle la carga de la interface y la iteracción con la misma.
  • Llamada en alguna parte de un menú para solicitar la carga de la página.
  • Una pagina a cargar en este caso mostraremos una página local, pero se puede integrar una URL en la web.
Primero necesitamos definir el layout correspondiente de la interface para contener nuestro elemento para visualización del pagina web. Lo llamaremos webmain.xml

<?xml version="1.0" encoding="utf-8"?>
<WebView  xmlns:android="http://schemas.android.com/apk/res/android"    
 android:id="@+id/webview"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
/>
  
En la interface integraremos el componente webwiew para visualizar la pagina correspondiente, y le asignaremos el id webview.

Para implementa la funcionalidad, en alguna parte del código integramos la llamada para cargar el Activity correspondiente.

intent = new Intent(act,MainWebView.class);
     intent.putExtra("URL","file:///android_asset/html/about.htm" ); 
     act.startActivity(intent);
    
La pagina a cargar se encuentra incluida dentro del proyecto en el apartado de assets y como subcarpeta html.

El siguiente paso es definir la clase de control de interface mediante un activity que cargue el layout correspondiente y la posterior carga de la pagina.

Mediante la case MainWebView.java implementaremos la clase de control la cual se muestra abajo.

package com.caleradreams.financalc;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import com.caleradreams.financalc.R;

public class MainWebView extends Activity {
WebView mwebview;
static final String KEY_URL = "URL";
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.webmain);

   // Get url
   Bundle extras = getIntent().getExtras();
   String url    = extras.getString(KEY_URL);
   if (url != ""){
   mwebview = (WebView) findViewById(R.id.webview);
   mwebview.getSettings().setJavaScriptEnabled(true);
   mwebview.loadUrl(url);
   }
}

}

mediante getExtras, obtenemos el parámetro de la URL a cargar. Obtenemos el componente webView, 
de este ejecutamos loadUrl, que cargará finalmente la pagina web.

Hay que recordar que para utilizar este componente es necesario asignar el permiso correspondiente en el manifiesto (AndroidManifiest.xml)

Se agrega el activity y se asigna el permiso para acceso a Internet.

<activity android:name="com.caleradreams.financalc.MainWebView"
                  android:label="WebView"
                  android:launchMode="singleTask"
                  android:theme="@android:style/Theme.NoTitleBar">                  
            <intent-filter>                
                <category android:name="android.intent.category.LAUNCHER"/>                          
            </intent-filter>
        </activity>

Con la siguiente línea se otorga el permiso a Internet.

<uses-permission android:name="android.permission.INTERNET" />


Este método se puede extender para cargar paginas en internet , ya que se puede pasar como parámetro una URL en particular.

Hasta la próxima.



Comments