Ejemplo de tutorial de preferencias compartidas de Android

En este tutorial, utilizaremos preferencias compartidas en nuestra aplicación de Android para almacenar datos en forma de par clave-valor .

Descripción general de las preferencias compartidas de Android

Shared Preferences permite que las actividades y aplicaciones mantengan sus preferencias, en forma de pares clave-valor similares a un mapa que persistirá incluso cuando el usuario cierre la aplicación. Android almacena la configuración de Shared Preferences como un archivo XML en la carpeta shared_prefs , en el directorio DATA/data/{application package}. La carpeta DATA se puede obtener llamando a Environment.getDataDirectory(). SharedPreferences es específico de la aplicación, es decir, los datos se pierden al realizar una de las siguientes opciones:

  • al desinstalar la aplicación
  • sobre borrar los datos de la aplicación (a través de Configuración)

Como sugiere el nombre, el propósito principal es almacenar detalles de configuración especificados por el usuario, como configuraciones específicas del usuario, manteniendo al usuario conectado a la aplicación. Para obtener acceso a las preferencias, tenemos tres API para elegir:

  • getPreferences() : se utiliza desde dentro de su Actividad, para acceder a las preferencias específicas de la actividad
  • getSharedPreferences() : se utiliza desde dentro de su Actividad (u otro Contexto de aplicación), para acceder a las preferencias a nivel de aplicación
  • getDefaultSharedPreferences() : se utiliza en PreferenceManager para obtener las preferencias compartidas que funcionan en conjunto con el marco de preferencias general de Android

En este tutorial, utilizaremos getSharedPreferences(). El método se define de la siguiente manera: getSharedPreferences (String PREFS_NAME, int mode) PREFS_NAME es el nombre del archivo. mode es el modo operativo. A continuación, se muestran los modos operativos aplicables:

  • MODE_PRIVATE : el modo predeterminado, donde solo la aplicación que realiza la llamada puede acceder al archivo creado.
  • MODE_WORLD_READABLE : Crear archivos legibles para todo el mundo es muy peligroso y es probable que cause agujeros de seguridad en las aplicaciones.
  • MODE_WORLD_WRITEABLE : Crear archivos con permisos de escritura global es muy peligroso y puede causar agujeros de seguridad en las aplicaciones.
  • MODE_MULTI_PROCESS : Este método verificará la modificación de las preferencias incluso si la instancia de preferencia compartida ya se ha cargado
  • MODE_APPEND : Esto agregará las nuevas preferencias con las preferencias ya existentes.
  • MODE_ENABLE_WRITE_AHEAD_LOGGING : Indicador de apertura de la base de datos. Cuando está configurado, habilitará el registro de escritura anticipada de manera predeterminada

Inicialización

Necesitamos un editor para editar y guardar los cambios en las preferencias compartidas. El siguiente código se puede utilizar para obtener las preferencias compartidas.

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private modeEditor editor = pref.edit();

Almacenamiento de datos

editor.commit() se utiliza para guardar los cambios en las preferencias compartidas.

editor.putBoolean("key_name", true); // Storing boolean - true/falseeditor.putString("key_name", "string value"); // Storing stringeditor.putInt("key_name", "int value"); // Storing integereditor.putFloat("key_name", "float value"); // Storing floateditor.putLong("key_name", "long value"); // Storing long editor.commit(); // commit changes

Recuperando datos

Se pueden recuperar datos de las preferencias guardadas llamando a getString() de la siguiente manera:

pref.getString("key_name", null); // getting Stringpref.getInt("key_name", -1); // getting Integerpref.getFloat("key_name", null); // getting Floatpref.getLong("key_name", null); // getting Longpref.getBoolean("key_name", null); // getting boolean

Borrar o eliminar datos

remove(“key_name”) se utiliza para eliminar ese valor en particular. clear() se utiliza para eliminar todos los datos .

editor.remove("name"); // will delete key nameeditor.remove("email"); // will delete key email editor.commit(); // commit changes
editor.clear();editor.commit(); // commit changes

Estructura del proyecto

Código del proyecto de preferencias compartidas de Android

El activity_main.xmldiseño consta de dos vistas EditText que almacenan y muestran el nombre y el correo electrónico. Los tres botones implementan sus respectivos onClicks en el MainActivity.

RelativeLayout xmlns_android="https://schemas.android.com/apk/res/android"    android_layout_width="match_parent"    android_layout_height="match_parent"    android_paddingBottom="@dimen/activity_vertical_margin"    android_paddingLeft="@dimen/activity_horizontal_margin"    android_paddingRight="@dimen/activity_horizontal_margin"    android_paddingTop="@dimen/activity_vertical_margin"     Button        android_id="@+id/btnSave"        android_layout_width="wrap_content"        android_layout_height="wrap_content"        android_layout_centerVertical="true"        android_layout_alignParentLeft="true"        android_layout_alignParentStart="true"        android_onClick="Save"        android_text="Save" /    Button        android_id="@+id/btnRetr"        android_layout_width="wrap_content"        android_layout_height="wrap_content"        android_layout_centerHorizontal="true"        android_layout_centerVertical="true"        android_onClick="Get"        android_text="Retrieve" /    Button        android_id="@+id/btnClear"        android_layout_width="wrap_content"        android_layout_height="wrap_content"        android_layout_alignRight="@+id/etEmail"        android_layout_centerVertical="true"        android_layout_alignParentRight="true"        android_layout_alignParentEnd="true"        android_onClick="clear"        android_text="Clear" /    EditText        android_id="@+id/etEmail"        android_layout_width="match_parent"        android_layout_height="wrap_content"        android_ems="10"        android_hint="Email"        android_inputType="textEmailAddress"        android_layout_below="@+id/etName"        android_layout_marginTop="20dp"        android_layout_alignParentRight="true"        android_layout_alignParentEnd="true" /    EditText        android_id="@+id/etName"        android_layout_width="match_parent"        android_layout_height="wrap_content"        android_ems="10"        android_hint="Name"        android_inputType="text"        android_layout_alignParentTop="true"        android_layout_alignLeft="@+id/etEmail"        android_layout_alignStart="@+id/etEmail" //RelativeLayout

El MainActivity.javaarchivo se utiliza para guardar y recuperar los datos a través de claves.

package com.journaldev.sharedpreferences;import android.app.Activity;import android.content.Context;import android.content.SharedPreferences;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.TextView;public class MainActivity extends Activity {    SharedPreferences sharedpreferences;    TextView name;    TextView email;    public static final String mypreference = "mypref";    public static final String Name = "nameKey";    public static final String Email = "emailKey";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        name = (TextView) findViewById(R.id.etName);        email = (TextView) findViewById(R.id.etEmail);        sharedpreferences = getSharedPreferences(mypreference,                Context.MODE_PRIVATE);        if (sharedpreferences.contains(Name)) {            name.setText(sharedpreferences.getString(Name, ""));        }        if (sharedpreferences.contains(Email)) {            email.setText(sharedpreferences.getString(Email, ""));        }    }    public void Save(View view) {        String n = name.getText().toString();        String e = email.getText().toString();        SharedPreferences.Editor editor = sharedpreferences.edit();        editor.putString(Name, n);        editor.putString(Email, e);        editor.commit();    }    public void clear(View view) {        name = (TextView) findViewById(R.id.etName);        email = (TextView) findViewById(R.id.etEmail);        name.setText("");        email.setText("");    }    public void Get(View view) {        name = (TextView) findViewById(R.id.etName);        email = (TextView) findViewById(R.id.etEmail);        sharedpreferences = getSharedPreferences(mypreference,                Context.MODE_PRIVATE);        if (sharedpreferences.contains(Name)) {            name.setText(sharedpreferences.getString(Name, ""));        }        if (sharedpreferences.contains(Email)) {            email.setText(sharedpreferences.getString(Email, ""));        }    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }}

mypreference es el nombre del archivo donde se almacena el par clave-valor de las preferencias compartidas. La siguiente imagen muestra el resultado final de nuestro proyecto: Con esto finaliza este tutorial. Puedes descargar el proyecto Android Shared Preferences desde el siguiente enlace.

Descargar Proyecto de ejemplo de preferencias compartidas de Android

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio