jueves, 11 de abril de 2013

Android y SharePreferences


Para leer los datos basta con usar SharedPreferences:

import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

prefs.getString("keystring","defvalue");// En el caso de que sea un String
prefs.getBoolean("keystring", true);// En el caso de que sea un bool


El segundo parametro de getBoolean y de getString es el valor por defecto, en caso de que no tenga valor o no exista.

A tomar en cuenta:
Varias app pueden proveer las preferencias del usuario desde su Configuracion (Preference Activity). Por esto android provee las Preferences.
Preferences son tipicamente un par de nombre calor. Pueden ser grabadas como "Share Preferences" atraves de varias actividades de una app (Actualmente no puede ser compartida entre procesos). O puede ser informacion especifica que una actividad necesita guardar.
  1. Shared Preferences: Pueden ser usadas por todos los componentes (actividades, servicios, etc) de una app.
  2. Activity handled preferences: Estas pueden ser solamente usadas por Activity y no puede ser usada por otro componente de la app.

Shared Preferences:
Se apoya en el metodo getSharedPreferences de la clase Context . La informacion es grabada en un fichero por defecto(1) o puede ser especificado el nombre del fichero(2).

(1) Manera Recomendada coje el archivo por defecto:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

(2) Coje la informacion especificando el nombre del archivo:

public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATE es el modo de operando por defecto de las preferences. Esto significa que el fichero creado sera accedido solamente por la app que lo creo. Los otros dos modos son  MODE_WORLD_READABLE y MODE_WORLD_WRITEABLE. En MODE_WORLD_READABLE otra aplicacion puede leer los datos pero no puede modificarlos. En este caso MODE_WORLD_WRITEABLE las otras app pueden modificarlo tambien.

Para Guardar valores en la configuracion tenemos que usar SharedPreference.Editor.

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // entero a ser guardado
editor.commit();

Editor tambien tiene metodos como remove() y clear() para borrar los valores del archivo de configuracion.

Activity Preferences:

El shared preferences puede ser usado por otros componentes de la aplicacion. Pero si no se necesita compartir las preferences con otros componentes y se quiere que sea privado. Se trabaja congetPreferences() y getSharedPreferences() con el nombre de la clase de la activity 

Para cojer las preferenes seria:

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
El codigo para guardar valores es el mismo que con shared preferences.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // // entero a ser guardado
editor.commit();

No hay comentarios:

Publicar un comentario