Вы находитесь на странице: 1из 4

12/8/2014

Cmo sacarle el mximo partido a WebView en aplicaciones Android | Blog de tecnologia e ingenieria web

7th March 2013


Cmo

sacarle

el

Cmo sacarle el mximo partido a


WebView en aplicaciones Android

mximo

partido

WebView

en

aplicaciones

Android

[http://blog.extrema-sistemas.com/2012/07/30/como-sacarle-el-maximo-partido-a-webviewen-aplicaciones-android/] :

Para conseguir la mxima comodidad en la autenticacin de usuarios, la lista de


opciones no es demasiado amplia. Nosotros nos decantamos por OAuth, que tiene
el inconveniente de dar por sentado el uso de un navegador para ejecutar la
autenticacin. En una aplicacin Android nativa esto puede ser un problema.

En Koliseo Checkpoint Charlie [http://help.koliseo.com/android/] soportamos 6


proveedores de OAuth. En Android esto solo es posible integrando un WebView
encargado de manejar todo el flujo de OAuth, con el efecto prctico de que hemos
embebido un navegador completo en nuestra aplicacin nativa.
Lo importante aqu es, Como podemos sacar el mximo provecho a este
WebView? Dnde podemos meter nuestro cdigo para que trabaje junto con este
widget?
Para quien nunca lo haya utilizado, lo primero es declarar el WebView en nuestro
layout. En este caso, vamos a declararlo en un fichero xml (que es lo
recomendado para los layouts, aunque puede hacerse tambin con Java):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/
android"
style="@style/CodeFont"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<WebView android:id="@+id/web_view" android:layout_width="fill
_parent" android:layout_height="fill_parent"/>
</RelativeLayout>
En solo 4 lneas de cdigo tenemos disponible una vista para mostrar pginas
webs con Webkit como motor de render. Este componente requiere solicitar al
usuario permiso para acceder a Internet desde el MANIFEST:
<uses-permission android:name="android.permission.INTERNET" />
Ya dentro de nuestra Activity ser donde tendremos que recuperar el widget y
trabajar con l.
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
http://miltecnologia.blogspot.com/2013/03/como-sacarle-el-maximo-partido-webview.html

1/4

12/8/2014

Cmo sacarle el mximo partido a WebView en aplicaciones Android | Blog de tecnologia e ingenieria web

webView = findViewById(R.id.web_view);
}
Introducimos un layout que nos dar la posibilidad de mostrar un spinner mientras
se est cargando una url:
<LinearLayout
android:id="@+id/loading_oauth_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_alignPa
rentRight="true"
android:layout_margin="10dip">
<ImageView
android:id="@+id/loading_oauth_service"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_marginRight="@dimen/oauth_margin"
android:contentDescription="@string/oauth_loading"
/>
<ProgressBar
android:layout_width="@dimen/oauth_height"
android:layout_height="@dimen/oauth_height"
android:layout_gravity="center_vertical"
android:layout_marginRight="@dimen/oauth_margin"
/>
</LinearLayout>
La parte ms importante para poder interferir en el funcionamiento del WebView
consiste en declarar una clase que extienda de WebViewClient. sta ser la que
nos dar los callbacks:
onLoadResource(WebView view, String url): Notifica a la aplicacin de
que un recurso especificado por la pgina va a ser cargado.
onPageFinished(WebView view, String url): Notifica que la carga de
una url ha sido completada.
onPageStarted(WebView view, String url, Bitmap favicon): Notifica
que la carga de una url va a comenzar.
onReceivedError(WebView
view,
int
errorCode,
String
description, String failingUrl): Notifica un error de conexin con una
failingUrl.
onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error): Notifica un error de SSL.
shouldOverrideUrlLoading (WebView view, String url): Nos permite
modificar el comportamiento de carga de una URL devolviendo false.
Anidaremos esta subclase dentro de nuestra Activity para tener acceso a todos los
recursos (Views especialmente), y no tener que andar manejando handlers o
intents para visualizar u ocultar una View:
http://miltecnologia.blogspot.com/2013/03/como-sacarle-el-maximo-partido-webview.html

2/4

12/8/2014

Cmo sacarle el mximo partido a WebView en aplicaciones Android | Blog de tecnologia e ingenieria web

private class LoginWebViewClient extends WebViewClient {


@Override
public void onPageFinished(WebView view, String url) {
showLoadingImage(View.GONE);
}
@Override
public void onPageStarted(WebView view, String url,
android.graphics.Bitmap favicon) {
showLoadingImage(View.VISIBLE);
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
showErrorMessage(getString(R.string.error_trying_to_connect) + "
: " + description);
}
}
Para que todo esto funcione solo nos queda realizar la peticin a la URL que
queramos:
webview.setWebViewClient(new CustomWebViewClient());
webview.loadUrl(url);
En este punto tenemos acceso completo al navegador: desde interceptar URLs
para que no se descarguen, habilitar JavaScript o no, o recibir notificaciones con
cada pgina descargada en el cliente. Los lmites los pone el desarrollador.
Posted 7th March 2013 by Miguel Angel Miniguano
0

Add a comment

Introduce tu comentario...

Comentar como:

Publicar

Cuenta de Google

Vista previa

http://miltecnologia.blogspot.com/2013/03/como-sacarle-el-maximo-partido-webview.html

3/4

12/8/2014

Cmo sacarle el mximo partido a WebView en aplicaciones Android | Blog de tecnologia e ingenieria web

http://miltecnologia.blogspot.com/2013/03/como-sacarle-el-maximo-partido-webview.html

4/4

Вам также может понравиться