Está en la página 1de 6

Android

190

Gua de desarrollo de aplicaciones


Estudiaremos en primer lugar cmo preparar un archivo de preferencias, a
continuacin cmo leer y escribir datos en l. Terminaremos viendo cmo
borrar todos los datos, o parte de ellos, de estos archivos.
Observacin
El sistema Android permite visualizar y salvaguardar las preferencias generales
del usuario. Toda aplicacin puede adoptar la misma funcionalidad y la misma representacin. La jerarqua de preferencias propuesta puede realizarse
directamente en un archivo XML. La implementacin de tal pantalla de preferencias se realiza derivando la clase PreferenceActivity. Desde
Android 3.0 (API 11), esta clase funciona de forma conjunta con los fragmentos de tipo PreferenceFragment para poder, entre otros, mostrar de lado
a lado los ttulos de las secciones y de las preferencias que proponen.

2.1 Preparar el archivo


Por defecto, un archivo de preferencias est asociado a la actividad que lo crea.
Este archivo lleva automticamente el nombre completo de la actividad correspondiente, por ejemplo:
es.midominio.android.miapli.prefsArch1.xml.
La creacin y la gestin del archivo de preferencias se realizan a travs de un
objeto de tipo SharedPreferences devuelto por el mtodo
getPreferences.
Sintaxis

Este mtodo recibe como parmetro el modo de acceso que se quiere asignar
al archivo tras su creacin. Los valores de este parmetro son:
Context.MODE_PRIVATE: modo privado. Es el modo por defecto. El archivo slo puede leerse desde la aplicacin en curso, o una aplicacin que
comparta el mismo identificador de usuario.
Context.MODE_WORLD_READABLE: las dems aplicaciones pueden leer el
archivo.

Editions ENI - All rights reserved

public SharedPreferences getPreferences (int mode)

La persistencia de los datos


Captulo 7
Context.MODE_WORLD_WRITEABLE: las dems aplicaciones pueden modificar el archivo.
Ejemplo
SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);

Tambin es posible especificar explcitamente otro nombre de archivo. Esto


permite crear varios archivos de preferencias. Para ello, hay que utilizar el mtodo getSharedPreferences especificando el nombre del archivo como
primer parmetro.
Sintaxis
public abstract SharedPreferences getSharedPreferences (String name,
int mode)

Ejemplo
SharedPreferences prefs =
getSharedPreferences("nombreArchivoPrefs1.xml",
Context.MODE_PRIVATE);

2.2 Lectura
Los datos contenidos en un archivo de preferencias se almacenan bajo la forma
de pares clave-valor. Tales asociaciones estn compuestas:
por una clave que es una cadena de caracteres de tipo String.
por un valor de tipo primitivo: boolean (booleano), float (nmero de
coma flotante), int o long (enteros) o String (cadena de caracteres).
Para leer los datos contenidos en un archivo de preferencias se utiliza el objeto
de tipo SharedPreferences recuperado anteriormente. Se invoca a continuacin a ciertos accesores que permiten leer individualmente un dato segn
su tipo.
Sintaxis
public abstract boolean getBoolean (String key, boolean defValue)
public abstract float getFloat (String key, float defValue)
public abstract int getInt (String key, int defValue)

191

Android

192

Gua de desarrollo de aplicaciones


public abstract long getLong (String key, long defValue)
public abstract String getString (String key, String defValue)

El primer parmetro es el nombre de la clave. El segundo parmetro es el valor


por defecto que se quiere devolver si no existe la clave.
Ejemplo
boolean modoWifi = prefs.getBoolean("modoWifi", false);
int contador = prefs.getInt("contador", 0);
String comentario = prefs.getString("comentario", "");

Tambin es posible recuperar todos los datos de golpe utilizando el mtodo


getAll.
Sintaxis
public abstract Map<String, ?> getAll ()

Ejemplo
Map<String, ?> valores = prefs.getAll();
Boolean modoWifi = (Boolean)valores.get("modoWifi");

El mtodo contains del objeto SharedPreferences permite verificar la


existencia de una clave dada que se le pasa como parmetro.
Sintaxis
public abstract boolean contains (String key)

Ejemplo

2.3 Escritura
La escritura de datos en un archivo de preferencias se realiza a travs de un
objeto de tipo SharedPreferences.Editor. Este objeto lo devuelve el
mtodo edit invocado sobre el objeto de tipo SharedPreferences
recuperado anteriormente.

Editions ENI - All rights reserved

if (prefs.contains("modoWifi")) {
procesamiento();
}

193

La persistencia de los datos


Captulo 7
Sintaxis
public abstract SharedPreferences.Editor edit ()

Ejemplo
SharedPreferences.Editor editor = prefs.edit();

El objeto editor permite especificar nuevos datos o modificar los datos existentes borrndolos con los nuevos. Estos mtodos permiten escribir individualmente un par clave-valor. De forma similar a los mtodos de lectura,
existe un mtodo por cada tipo primitivo. Estos mtodos reciben como parmetro el nombre de la clave y el valor del dato.
Sintaxis
public abstract SharedPreferences.Editor
boolean value)
public abstract SharedPreferences.Editor
float value)
public abstract SharedPreferences.Editor
int value)
public abstract SharedPreferences.Editor
long value)
public abstract SharedPreferences.Editor
String value)

putBoolean (String key,


putFloat (String key,
putInt (String key,
putLong (String key,
putString (String key,

Ejemplo
editor.putBoolean("modoWifi", true);
editor.putInt("contador", 42);
editor.putString("comentario", "Esto es un comentario");

La escritura de los datos no ser efectiva en el archivo hasta que se ejecute el


mtodo commit del objeto editor.
Sintaxis
public abstract boolean commit ()

Ejemplo
editor.commit();

Android

194

Gua de desarrollo de aplicaciones


Observacin
Preste atencin a no olvidarse de llamar al mtodo commit. En efecto, si no
realiza esta llamada, el objeto editor no sirve de nada; no se registrarn las
modificaciones que contiene.

2.4 Borrado
El borrado de los datos contenidos en un archivo de preferencias se hace utilizando el objeto editor de tipo SharedPreferences.Editor igual que
para escribir los datos.
El mtodo remove del objeto editor permite suprimir un par clave-valor. Se
pasa el nombre de la clave como parmetro.
Sintaxis
public abstract SharedPreferences.Editor remove (String key)

Ejemplo
editor.remove("modoWifi");

El mtodo clear permite borrar todos los datos, es decir, todos los pares
clave-valor.
Sintaxis
public abstract SharedPreferences.Editor clear ()

Ejemplo

Como ocurre con la escritura, es necesario invocar al mtodo commit para registrar los cambios.
Tambin es posible encadenar las modificaciones, puesto que los mtodos del
objeto editor devuelven este mismo objeto.
Ejemplo
editor.clear().putBoolean("modoWifi", modoWifi).commit();

Editions ENI - All rights reserved

editor.clear();

La persistencia de los datos


Captulo 7
Observacin
Cuando se invoca al mtodo commit, el mtodo clear se ejecuta en primer lugar, sea cual sea la posicin de su llamada.

Es posible, por ejemplo, reescribir la lnea anterior sin modificar el resultado.


Ejemplo
editor.putBoolean("modoWifi", modoWifi).clear().commit();

3. Archivos
Como acabamos de ver en la seccin anterior, los archivos de preferencias son
la solucin ideal para salvaguardar valores de tipos primitivos de manera
simple. Pero si lo que se quiere es almacenar datos ms complejos o datos brutos sin un formato adaptado al formato XML como, por ejemplo, la copia de
una imagen con formato PNG, esta solucin no es adecuada.
Necesitamos poder crear, escribir y leer archivos directamente.
Android permite guardar archivos en el almacenamiento interno del dispositivo o en un almacenamiento externo como, por ejemplo, una tarjeta SD. Proporciona tambin las API para guardar archivos temporales o archivos de
cach en ubicaciones definidas.
Vamos, por tanto, a ver en primer lugar la gestin de archivos en el almacenamiento interno, y en segundo lugar sobre un almacenamiento externo. Por ltimo, veremos la gestin de los archivos temporales.

3.1 Almacenamiento interno


Por defecto, los archivos se almacenan en el almacenamiento interno del dispositivo. El acceso a estos archivos est restringido a la aplicacin. Ni el usuario, ni las dems aplicaciones, pueden acceder a l.
Vamos a ver cmo crear un archivo en el almacenamiento interno, cmo leerlo
y, por ltimo, cmo borrarlo.

195

También podría gustarte