Cómo usar SharedPreferences en Android para almacenar, recuperar y editar valores [cerrado]

599

Quiero almacenar un valor de tiempo y necesito recuperarlo y editarlo. ¿Cómo puedo usar SharedPreferencespara hacer esto?

Muhammad Maqsoodur Rehman
fuente
He implementado un contenedor de preferencias compartidas genéricas, eche un vistazo: android-know-how-to.blogspot.co.il/2014/03/…
TacB0sS
Un enfoque simplificado sería mediante el uso de esta biblioteca: github.com/viralypatel/Android-SharedPreferences-Helper ... detalles técnicos extendidos en mi respuesta aquí ...
AndroidMechanic - Viral Patel

Respuestas:

838

Para obtener preferencias compartidas, utilice el siguiente método en su actividad:

SharedPreferences prefs = this.getSharedPreferences(
      "com.example.app", Context.MODE_PRIVATE);

Para leer las preferencias:

String dateTimeKey = "com.example.app.datetime";

// use a default value using new Date()
long l = prefs.getLong(dateTimeKey, new Date().getTime()); 

Para editar y guardar preferencias

Date dt = getSomeDate();
prefs.edit().putLong(dateTimeKey, dt.getTime()).apply();

El directorio de muestra de Android SDK contiene un ejemplo de recuperación y almacenamiento de preferencias compartidas. Está ubicado en:

<android-sdk-home>/samples/android-<platformversion>/ApiDemos directory

Editar ==>

Me di cuenta, es importante escribir la diferencia entre commit()y apply()aquí también.

commit()devolver truesi el valor se guardó correctamente de lo contrario false. Guarda valores en SharedPreferences sincrónicamente .

apply()se agregó en 2.3 y no devuelve ningún valor, ya sea en caso de éxito o fracaso. Guarda valores en SharedPreferences inmediatamente, pero inicia una confirmación asincrónica . Más detalles está aquí .

naikus
fuente
Entonces, la próxima vez que el usuario ejecute mi aplicación, el valor almacenado ya está allí y puedo recuperarlo ... ¿verdad?
Muhammad Maqsoodur Rehman
44
(Para cualquiera que lea lo anterior) Sí, es arbitrario. Este ejemplo solo guarda la fecha actual como una preferencia con la clave "com.example.app.datetime".
MSpeed
1
this.getSharedPreferencesme da el siguiente error:The method getSharedPreferences(String, int) is undefined for the type MyActivity
Si8
15
SharedPreferences.Editor.apply () se introdujo en Gingerbread en noviembre de 2010 (después de que se publicara esta respuesta). Úselo en lugar de commit () donde sea posible ya que apply () es más eficiente.
UpLate
44
Editor.apply () requiere un nivel de API 9 o superior. debajo de ese uso Editor.commit ()
Lennart Rolland
283

Para almacenar valores en preferencias compartidas:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name","Harneet");
editor.apply();

Para recuperar valores de preferencias compartidas:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("Name", "");
if(!name.equalsIgnoreCase(""))
{
    name = name + "  Sethi";  /* Edit the value here*/
}
Harneet Kaur
fuente
17
Me gusta más esta respuesta porque usa getDefaultSharedPreferences. Para la mayoría de los usuarios, esto simplificará las cosas porque se puede acceder a las mismas preferencias en toda la aplicación y no tiene que preocuparse por nombrar su archivo de preferencias. Más sobre eso aquí: stackoverflow.com/a/6310080/1839500
Dick Lucas el
Estoy de acuerdo ... Encontré esto después de arrancarme el pelo tratando de descubrir por qué no podía acceder a mis preferencias compartidas de otra actividad usando el método en la respuesta aceptada. ¡Muchas gracias!
You'reAGitForNotUsingGit
¿Cómo puedo usarlo para guardar y cargar Map<DateTime, Integer>?
Dmitry
Use github.com/AliEsaAssadi/Android-Power-Preference para simplificar la implementación
Ali Asadi
164

Para editar datos desharedpreference

 SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
 editor.putString("text", mSaved.getText().toString());
 editor.putInt("selection-start", mSaved.getSelectionStart());
 editor.putInt("selection-end", mSaved.getSelectionEnd());
 editor.apply();

Para recuperar datos desharedpreference

SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
String restoredText = prefs.getString("text", null);
if (restoredText != null) 
{
  //mSaved.setText(restoredText, TextView.BufferType.EDITABLE);
  int selectionStart = prefs.getInt("selection-start", -1);
  int selectionEnd = prefs.getInt("selection-end", -1);
  /*if (selectionStart != -1 && selectionEnd != -1)
  {
     mSaved.setSelection(selectionStart, selectionEnd);
  }*/
}

Editar

Tomé este fragmento de la muestra de demostración de API. Tenía una EditTextcaja allí. En esto contextno es obligatorio. Estoy comentando lo mismo.

DeRagan
fuente
12
+1, pero usa getPreferences (MODE_PRIVATE); en lugar de getPreferences (0); para legibilidad
Clave
¿Qué es mSaved aquí? Necesito guardar 2 valores de cadena.
Muhammad Maqsoodur Rehman
También me gustaría saber qué es mSaved. NVM Creo que es el cuadro de edición
karlstackoverflow
1
¿Qué significa -1 en getInt?
amr osama
1
Ese es el valor predeterminado que se devolverá si la clave (selección-inicio) no existe en las preferencias compartidas. Puede ser cualquier cosa y es solo para su referencia.
DeRagan
39

Escribir :

SharedPreferences preferences = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_WORLD_WRITEABLE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Authentication_Id",userid.getText().toString());
editor.putString("Authentication_Password",password.getText().toString());
editor.putString("Authentication_Status","true");
editor.apply();

Leer :

SharedPreferences prfs = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
String Astatus = prfs.getString("Authentication_Status", "");
desbordamiento de pila
fuente
MODE_WORLD_WRITEABLE está en desuso.
Christopher Smit
28

La manera más fácil:

Ahorrar:

getPreferences(MODE_PRIVATE).edit().putString("Name of variable",value).commit();

Para recuperar:

your_variable = getPreferences(MODE_PRIVATE).getString("Name of variable",default value);
ArcDare
fuente
Intenté esto entre actividades y no funcionó. ¿Es necesario incluir la estructura del paquete en el nombre var?
Gaʀʀʏ
Para usar esta estructura entre actividades, reemplace getPreferences (MODE_PRIVATE) con PreferenceManager.getDefaultSharedPreferences (su actividad)
Lucian Novac
Use apply () en lugar de commit ()
Vaibhav
18

Establecer valores en Preferencia:

// MY_PREFS_NAME - a static String variable like: 
//public static final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
 editor.putString("name", "Elena");
 editor.putInt("idName", 12);
 editor.commit();

Recuperar datos de preferencia:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
  String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
  int idName = prefs.getInt("idName", 0); //0 is the default value.
}

más información:

Usar preferencias compartidas

Preferencias compartidas

Jorgesys
fuente
¿Qué es MyPrefsFile? El xml de la actividad de preferencia?
Martin Erlic
17

Clase de preferencias compartidas Singleton. Puede ayudar a otros en el futuro.

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;

public class SharedPref
{
    private static SharedPreferences mSharedPref;
    public static final String NAME = "NAME";
    public static final String AGE = "AGE";
    public static final String IS_SELECT = "IS_SELECT";

    private SharedPref()
    {

    }

    public static void init(Context context)
    {
        if(mSharedPref == null)
            mSharedPref = context.getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE);
    }

    public static String read(String key, String defValue) {
        return mSharedPref.getString(key, defValue);
    }

    public static void write(String key, String value) {
        SharedPreferences.Editor prefsEditor = mSharedPref.edit();
        prefsEditor.putString(key, value);
        prefsEditor.commit();
    }

    public static boolean read(String key, boolean defValue) {
        return mSharedPref.getBoolean(key, defValue);
    }

    public static void write(String key, boolean value) {
        SharedPreferences.Editor prefsEditor = mSharedPref.edit();
        prefsEditor.putBoolean(key, value);
        prefsEditor.commit();
    }

    public static Integer read(String key, int defValue) {
        return mSharedPref.getInt(key, defValue);
    }

    public static void write(String key, Integer value) {
        SharedPreferences.Editor prefsEditor = mSharedPref.edit();
        prefsEditor.putInt(key, value).commit();
    }
}

Simplemente llame SharedPref.init()en MainActivityvez

SharedPref.init(getApplicationContext());

Para escribir datos

SharedPref.write(SharedPref.NAME, "XXXX");//save string in shared preference.
SharedPref.write(SharedPref.AGE, 25);//save int in shared preference.
SharedPref.write(SharedPref.IS_SELECT, true);//save boolean in shared preference.

Para leer datos

String name = SharedPref.read(SharedPref.NAME, null);//read string in shared preference.
int age = SharedPref.read(SharedPref.AGE, 0);//read int in shared preference.
boolean isSelect = SharedPref.read(SharedPref.IS_SELECT, false);//read boolean in shared preference.
Magesh Pandian
fuente
15

Para almacenar información

SharedPreferences preferences = getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("username", username.getText().toString());
editor.putString("password", password.getText().toString());
editor.putString("logged", "logged");
editor.commit();

Para restablecer tus preferencias

SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();
fidazik
fuente
12

Si está haciendo una aplicación grande con otros desarrolladores de su equipo y tiene la intención de tener todo bien organizado sin código disperso o diferentes instancias de SharedPreferences, puede hacer algo como esto:

//SharedPreferences manager class
public class SharedPrefs {

    //SharedPreferences file name
    private static String SHARED_PREFS_FILE_NAME = "my_app_shared_prefs";

    //here you can centralize all your shared prefs keys
    public static String KEY_MY_SHARED_BOOLEAN = "my_shared_boolean";
    public static String KEY_MY_SHARED_FOO = "my_shared_foo";

    //get the SharedPreferences object instance
    //create SharedPreferences file if not present


    private static SharedPreferences getPrefs(Context context) {
        return context.getSharedPreferences(SHARED_PREFS_FILE_NAME, Context.MODE_PRIVATE);
    }

    //Save Booleans
    public static void savePref(Context context, String key, boolean value) {
        getPrefs(context).edit().putBoolean(key, value).commit();       
    }

    //Get Booleans
    public static boolean getBoolean(Context context, String key) {
        return getPrefs(context).getBoolean(key, false);
    }

    //Get Booleans if not found return a predefined default value
    public static boolean getBoolean(Context context, String key, boolean defaultValue) {
        return getPrefs(context).getBoolean(key, defaultValue);
    }

    //Strings
    public static void save(Context context, String key, String value) {
        getPrefs(context).edit().putString(key, value).commit();
    }

    public static String getString(Context context, String key) {
        return getPrefs(context).getString(key, "");
    }

    public static String getString(Context context, String key, String defaultValue) {
        return getPrefs(context).getString(key, defaultValue);
    }

    //Integers
    public static void save(Context context, String key, int value) {
        getPrefs(context).edit().putInt(key, value).commit();
    }

    public static int getInt(Context context, String key) {
        return getPrefs(context).getInt(key, 0);
    }

    public static int getInt(Context context, String key, int defaultValue) {
        return getPrefs(context).getInt(key, defaultValue);
    }

    //Floats
    public static void save(Context context, String key, float value) {
        getPrefs(context).edit().putFloat(key, value).commit();
    }

    public static float getFloat(Context context, String key) {
        return getPrefs(context).getFloat(key, 0);
    }

    public static float getFloat(Context context, String key, float defaultValue) {
        return getPrefs(context).getFloat(key, defaultValue);
    }

    //Longs
    public static void save(Context context, String key, long value) {
        getPrefs(context).edit().putLong(key, value).commit();
    }

    public static long getLong(Context context, String key) {
        return getPrefs(context).getLong(key, 0);
    }

    public static long getLong(Context context, String key, long defaultValue) {
        return getPrefs(context).getLong(key, defaultValue);
    }

    //StringSets
    public static void save(Context context, String key, Set<String> value) {
        getPrefs(context).edit().putStringSet(key, value).commit();
    }

    public static Set<String> getStringSet(Context context, String key) {
        return getPrefs(context).getStringSet(key, null);
    }

    public static Set<String> getStringSet(Context context, String key, Set<String> defaultValue) {
        return getPrefs(context).getStringSet(key, defaultValue);
    }
}

En su actividad, puede guardar SharedPreferences de esta manera

//saving a boolean into prefs
SharedPrefs.savePref(this, SharedPrefs.KEY_MY_SHARED_BOOLEAN, booleanVar);

y puede recuperar sus preferencias compartidas de esta manera

//getting a boolean from prefs
booleanVar = SharedPrefs.getBoolean(this, SharedPrefs.KEY_MY_SHARED_BOOLEAN);
alexm
fuente
12

En cualquier aplicación, hay preferencias predeterminadas a las que se puede acceder a través de la PreferenceManagerinstancia y su método relacionado getDefaultSharedPreferences(Context).

Con la SharedPreferenceinstancia, se puede recuperar el valor int de cualquier preferencia con getInt (String key, int defVal) . La preferencia que nos interesa en este caso es contraria.

En nuestro caso, podemos modificar la SharedPreferenceinstancia en nuestro caso usando edit () y usar elputInt(String key, int newVal) aumento de la cuenta para nuestra aplicación que existe más allá de la aplicación y se muestra en consecuencia.

Para realizar una demostración adicional de esto, reinicie y su aplicación nuevamente, notará que el recuento aumentará cada vez que reinicie la aplicación.

PreferencesDemo.java

Código:

package org.example.preferences;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.TextView;

public class PreferencesDemo extends Activity {
   /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Get the app's shared preferences
        SharedPreferences app_preferences = 
        PreferenceManager.getDefaultSharedPreferences(this);

        // Get the value for the run counter
        int counter = app_preferences.getInt("counter", 0);

        // Update the TextView
        TextView text = (TextView) findViewById(R.id.text);
        text.setText("This app has been started " + counter + " times.");

        // Increment the counter
        SharedPreferences.Editor editor = app_preferences.edit();
        editor.putInt("counter", ++counter);
        editor.commit(); // Very important
    }
}

main.xml

Código:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" >

        <TextView
            android:id="@+id/text"  
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:text="@string/hello" />
</LinearLayout>
Sathish
fuente
8

Solución simple de cómo almacenar el valor de inicio de sesión en SharedPreferences.

Puede extender la MainActivityclase u otra clase donde almacenará el "valor de algo que desea conservar". Ponga esto en clases de escritor y lector:

public static final String GAME_PREFERENCES_LOGIN = "Login";

Aquí InputClassestá la OutputClassclase de entrada y salida, respectivamente.

// This is a storage, put this in a class which you can extend or in both classes:
//(input and output)
public static final String GAME_PREFERENCES_LOGIN = "Login";

// String from the text input (can be from anywhere)
String login = inputLogin.getText().toString();

// then to add a value in InputCalss "SAVE",
SharedPreferences example = getSharedPreferences(GAME_PREFERENCES_LOGIN, 0);
Editor editor = example.edit();
editor.putString("value", login);
editor.commit();

Ahora puede usarlo en otro lugar, como otra clase. Lo siguiente es OutputClass.

SharedPreferences example = getSharedPreferences(GAME_PREFERENCES_LOGIN, 0);
String userString = example.getString("value", "defValue");

// the following will print it out in console
Logger.getLogger("Name of a OutputClass".class.getName()).log(Level.INFO, userString);
Zly-Zly
fuente
8

Almacenar en SharedPreferences

SharedPreferences preferences = getSharedPreferences("temp", getApplicationContext().MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putString("name", name);
editor.commit();

Obtener en preferencias compartidas

SharedPreferences preferences=getSharedPreferences("temp", getApplicationContext().MODE_PRIVATE);
String name=preferences.getString("name",null);

Nota: "temp" es nombre de preferencias compartidas y "nombre" es valor de entrada. si el valor no sale, entonces devuelve nulo

Ravi Parsania
fuente
Muy bueno y fácil de usar. Pero aquí está Context.MODE_PRIVATE no getApplicationContext (). MODE_PRIVATE
Maria Gheorghe
7

Editar

SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString("yourValue", value);
editor.commit();

Leer

SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE);
value= pref.getString("yourValue", "");
Faxriddin Abdullayev
fuente
6

La idea básica de SharedPreferences es almacenar cosas en un archivo XML.

  1. Declare su ruta de archivo xml. (Si no tiene este archivo, Android lo creará. Si tiene este archivo, Android accederá a él).

    SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
  2. Escribir valor en Preferencias compartidas

    prefs.edit().putLong("preference_file_key", 1010101).apply();

    el preference_file_keyes el nombre de los archivos de preferencias compartidas. Y el 1010101es el valor que necesita almacenar.

    apply()por fin es guardar los cambios. Si obtiene un error apply(), cámbielo a commit(). Entonces esta oración alternativa es

    prefs.edit().putLong("preference_file_key", 1010101).commit();
  3. Leer desde preferencias compartidas

    SharedPreferences sp = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
    long lsp = sp.getLong("preference_file_key", -1);

    lspserá -1si preference_file_keyno tiene valor. Si 'prefiere_file_key' tiene un valor, devolverá el valor de este.

Todo el código para escribir es

    SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);    // Declare xml file
    prefs.edit().putLong("preference_file_key", 1010101).apply();    // Write the value to key.

El código para leer es

    SharedPreferences sf = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);    // Declare xml file
    long lsp = sp.getLong("preference_file_key", -1);    // Read the key and store in lsp
kakarotto
fuente
Editor.apply () requiere un nivel de API 9 o superior. debajo de ese uso Editor.commit ()
Lennart Rolland
6

Puede guardar valor utilizando este método:

public void savePreferencesForReasonCode(Context context,
    String key, String value) {
    SharedPreferences sharedPreferences = PreferenceManager
    .getDefaultSharedPreferences(context);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
    }

Y usando este método puede obtener valor de SharedPreferences:

public String getPreferences(Context context, String prefKey) {
  SharedPreferences sharedPreferences = PreferenceManager
 .getDefaultSharedPreferences(context);
 return sharedPreferences.getString(prefKey, "");
}

Aquí prefKeyestá la clave que usó para guardar el valor específico. Gracias.

MD Sajedul Karim
fuente
¿Qué hay de los booleanos?
Yousha Aleayoub
guardar usando esta línea: editor.putString (clave, valor); use esta línea: boolean yourLocked = prefs.getBoolean ("bloqueado", falso);
Md. Sajedul Karim
6
editor.putString("text", mSaved.getText().toString());

Aquí, mSavedpuede ser cualquiera TextViewo EditTextde donde podemos extraer una cadena. simplemente puede especificar una cadena. Aquí el texto será la clave que contenga el valor obtenido de mSaved( TextViewo EditText).

SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);

Además, no es necesario guardar el archivo de preferencias utilizando el nombre del paquete, es decir, "com.example.app". Puedes mencionar tu propio nombre preferido. Espero que esto ayude !

java dev
fuente
5

Hay muchas formas en que las personas recomiendan cómo usar SharedPreferences . He hecho un proyecto de demostración aquí . El punto clave en la muestra es usar ApplicationContext y un único objeto de preferencias compartidas . Esto demuestra cómo usar SharedPreferences con las siguientes características: -

  • Usando la clase singelton para acceder / actualizar SharedPreferences
  • No es necesario pasar el contexto siempre para leer / escribir SharedPreferences
  • Utiliza apply () en lugar de commit ()
  • apply () es guardar asíncrono, no devuelve nada, actualiza el valor en la memoria primero y los cambios se escriben en el disco después de forma asíncrona.
  • commit () es síncrono guardar, devuelve verdadero / falso basado en el resultado. Los cambios se escriben en el disco sincrónicamente
  • funciona en versiones de Android 2.3+

Ejemplo de uso de la siguiente manera: -

MyAppPreference.getInstance().setSampleStringKey("some_value");
String value= MyAppPreference.getInstance().getSampleStringKey();

Obtenga el código fuente aquí y las API detalladas se pueden encontrar aquí en developer.android.com

Akhil
fuente
Hola, tengo una pregunta sobre las preferencias compartidas. ¿Te importa contestarlo? stackoverflow.com/questions/35713822/…
Ruchir Baronia
5

La mejor práctica de todas

Crear interfaz nombrada con PreferenceManager :

// Interface to save values in shared preferences and also for retrieve values from shared preferences
public interface PreferenceManager {

    SharedPreferences getPreferences();
    Editor editPreferences();

    void setString(String key, String value);
    String getString(String key);

    void setBoolean(String key, boolean value);
    boolean getBoolean(String key);

    void setInteger(String key, int value);
    int getInteger(String key);

    void setFloat(String key, float value);
    float getFloat(String key);

}

Cómo usar con Actividad / Fragmento :

public class HomeActivity extends AppCompatActivity implements PreferenceManager{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout_activity_home);
    }

    @Override
    public SharedPreferences getPreferences(){
        return getSharedPreferences("SP_TITLE", Context.MODE_PRIVATE);
    }

    @Override
    public SharedPreferences.Editor editPreferences(){
        return getPreferences().edit();
    }

    @Override
    public void setString(String key, String value) {
        editPreferences().putString(key, value).commit();
    }

    @Override
    public String getString(String key) {
        return getPreferences().getString(key, "");
    }

    @Override
    public void setBoolean(String key, boolean value) {
        editPreferences().putBoolean(key, value).commit();
    }

    @Override
    public boolean getBoolean(String key) {
        return  getPreferences().getBoolean(key, false);
    }

    @Override
    public void setInteger(String key, int value) {
        editPreferences().putInt(key, value).commit();
    }

    @Override
    public int getInteger(String key) {
        return getPreferences().getInt(key, 0);
    }

    @Override
    public void setFloat(String key, float value) {
        editPreferences().putFloat(key, value).commit();
    }

    @Override
    public float getFloat(String key) {
        return getPreferences().getFloat(key, 0);
    }
}

Nota: Reemplace su clave de SharedPreference con SP_TITLE .

Ejemplos:

Almacene la cadena en shareperence :

setString("my_key", "my_value");

Obtener cadena de shareperence :

String strValue = getString("my_key");

Espero que esto te ayudará.

Hiren Patel
fuente
¿Utilizo el mismo objeto de preferencia compartida para almacenar todo, o creo nuevos objetos de preferencia compartidos para cada pieza de datos diferente?
Ruchir Baronia
@Ruchir Baronia, no es necesario crear diferentes objetos, por cierto, no es necesario inicializar objetos de preferencias compartidas. Puede guardar por el camino anterior. Avísame si se requiere algo de mi parte.
Hiren Patel
Bien gracias. ¿Me puede ayudar con esto? stackoverflow.com/questions/35235759/…
Ruchir Baronia
@Ruchir Baronia, puedes cancelar el hilo. Espero que esto te ayude.
Hiren Patel
Oh, lo siento mucho, hice una pregunta equivocada
Quería
5

Para almacenar valores en preferencias compartidas:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sp.edit();
editor.putString("Name","Jayesh");
editor.commit();

Para recuperar valores de preferencias compartidas:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String name = sp.getString("Name", ""); // Second parameter is the default value.
Muhammad Hassan
fuente
4

ahorrar

PreferenceManager.getDefaultSharedPreferences(this).edit().putString("VarName","your value").apply();

para retirarse:

String name = PreferenceManager.getDefaultSharedPreferences(this).getString("VarName","defaultValue");

el valor predeterminado es: valores a devolver si esta preferencia no existe.

puede cambiar " esto " con getActivity () o getApplicationContext () en algunos casos

Nadir Belhaj
fuente
Hola, tengo una pregunta sobre las preferencias compartidas. ¿Te importa contestarlo? stackoverflow.com/questions/35713822/…
Ruchir Baronia
Sí, lo hice ... :)
Ruchir Baronia
3

Escribo una clase auxiliar para preferencias compartidas:

import android.content.Context;
import android.content.SharedPreferences;

/**
 * Created by mete_ on 23.12.2016.
 */
public class HelperSharedPref {

Context mContext;

public HelperSharedPref(Context mContext) {
    this.mContext = mContext;
}

/**
 *
 * @param key Constant RC
 * @param value Only String, Integer, Long, Float, Boolean types
 */
public void saveToSharedPref(String key, Object value) throws Exception {
    SharedPreferences.Editor editor = mContext.getSharedPreferences(key, Context.MODE_PRIVATE).edit();
    if (value instanceof String) {
        editor.putString(key, (String) value);
    } else if (value instanceof Integer) {
        editor.putInt(key, (Integer) value);
    } else if (value instanceof Long) {
        editor.putLong(key, (Long) value);
    } else if (value instanceof Float) {
        editor.putFloat(key, (Float) value);
    } else if (value instanceof Boolean) {
        editor.putBoolean(key, (Boolean) value);
    } else {
        throw new Exception("Unacceptable object type");
    }

    editor.commit();
}

/**
 * Return String
 * @param key
 * @return null default is null
 */
public String loadStringFromSharedPref(String key) throws Exception {
    SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE);
    String restoredText = prefs.getString(key, null);

    return restoredText;
}

/**
 * Return int
 * @param key
 * @return null default is -1
 */
public Integer loadIntegerFromSharedPref(String key) throws Exception {
    SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE);
    Integer restoredText = prefs.getInt(key, -1);

    return restoredText;
}

/**
 * Return float
 * @param key
 * @return null default is -1
 */
public Float loadFloatFromSharedPref(String key) throws Exception {
    SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE);
    Float restoredText = prefs.getFloat(key, -1);

    return restoredText;
}

/**
 * Return long
 * @param key
 * @return null default is -1
 */
public Long loadLongFromSharedPref(String key) throws Exception {
    SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE);
    Long restoredText = prefs.getLong(key, -1);

    return restoredText;
}

/**
 * Return boolean
 * @param key
 * @return null default is false
 */
public Boolean loadBooleanFromSharedPref(String key) throws Exception {
    SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE);
    Boolean restoredText = prefs.getBoolean(key, false);

    return restoredText;
}

}
Asignar
fuente
3

Use este ejemplo de manera simple, clara y marcada

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >

   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >

      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >

         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>

      </activity>

   </application>
</manifest>
public class MainActivity extends AppCompatActivity {
   EditText ed1,ed2,ed3;
   Button b1;

   public static final String MyPREFERENCES = "MyPrefs" ;
   public static final String Name = "nameKey";
   public static final String Phone = "phoneKey";
   public static final String Email = "emailKey";

   SharedPreferences sharedpreferences;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      ed1=(EditText)findViewById(R.id.editText);
      ed2=(EditText)findViewById(R.id.editText2);
      ed3=(EditText)findViewById(R.id.editText3);

      b1=(Button)findViewById(R.id.button);
      sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            String n  = ed1.getText().toString();
            String ph  = ed2.getText().toString();
            String e  = ed3.getText().toString();

            SharedPreferences.Editor editor = sharedpreferences.edit();

            editor.putString(Name, n);
            editor.putString(Phone, ph);
            editor.putString(Email, e);
            editor.commit();
            Toast.makeText(MainActivity.this,"Thanks",Toast.LENGTH_LONG).show();
         }
      });
   }

}
Sohaib Aslam
fuente
2

Usando esta biblioteca simple , así es como realiza las llamadas a SharedPreferences ..

TinyDB tinydb = new TinyDB(context);

tinydb.putInt("clickCount", 2);

tinydb.putString("userName", "john");
tinydb.putBoolean("isUserMale", true); 

tinydb.putList("MyUsers", mUsersArray);
tinydb.putImagePNG("DropBox/WorkImages", "MeAtlunch.png", lunchBitmap);

//These plus the corresponding get methods are all Included
kc ochibili
fuente
2

Quería agregar aquí que la mayoría de los fragmentos de esta pregunta tendrán algo así como MODE_PRIVATE cuando se usan SharedPreferences. Bueno, MODE_PRIVATE significa que cualquier cosa que escriba en esta preferencia compartida solo puede ser leída por su aplicación.

Cualquiera que sea la clave que pase al método getSharedPreferences (), Android crea un archivo con ese nombre y almacena los datos de preferencia en él. También recuerde que se supone que getSharedPreferences () debe usarse cuando tiene la intención de tener múltiples archivos de preferencias para su aplicación. Si tiene la intención de usar un archivo de preferencias únicas y almacenar todos los pares clave-valor en él, use el método getSharedPreference (). Es extraño por qué todos (incluido yo mismo) simplemente usamos el sabor getSharedPreferences () sin siquiera comprender la diferencia entre los dos anteriores.

El siguiente video tutorial debería ayudar https://www.youtube.com/watch?v=2PcAQ1NBy98

Sandeep
fuente
2

Biblioteca simple y sin complicaciones :: "Android-SharedPreferences-Helper"

Más vale tarde que nunca: creé la biblioteca "Android-SharedPreferences-Helper" para ayudar a reducir la complejidad y el esfuerzo del uso SharedPreferences. También proporciona alguna funcionalidad extendida. Pocas cosas que ofrece son las siguientes:

  • Inicialización y configuración de una línea
  • Seleccionar fácilmente si se usan las preferencias predeterminadas o un archivo de preferencias personalizado
  • Valores predeterminados predefinidos (valores predeterminados del tipo de datos) y personalizables (lo que puede elegir) para cada tipo de datos
  • Capacidad para establecer diferentes valores predeterminados para un solo uso con solo un parámetro adicional
  • Puede registrar y cancelar el registro de OnSharedPreferenceChangeListener como lo hace para la clase predeterminada
dependencies {
    ...
    ...
    compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar')
}

Declaración de objeto SharedPreferencesHelper: (recomendado a nivel de clase)

SharedPreferencesHelper sph; 

Creación de instancias del objeto SharedPreferencesHelper: (recomendado en el método onCreate ())

// use one of the following ways to instantiate
sph = new SharedPreferencesHelper(this); //this will use default shared preferences
sph = new SharedPreferencesHelper(this, "myappprefs"); // this will create a named shared preference file
sph = new SharedPreferencesHelper(this, "myappprefs", 0); // this will allow you to specify a mode

Poner valores en preferencias compartidas

¡Bastante simple! A diferencia de la forma predeterminada (cuando se usa la clase SharedPreferences) NO necesitará llamar .edit()y .commit()siempre.

sph.putBoolean("boolKey", true);
sph.putInt("intKey", 123);
sph.putString("stringKey", "string value");
sph.putLong("longKey", 456876451);
sph.putFloat("floatKey", 1.51f);

// putStringSet is supported only for android versions above HONEYCOMB
Set name = new HashSet();
name.add("Viral");
name.add("Patel");
sph.putStringSet("name", name);

¡Eso es! Sus valores se almacenan en las preferencias compartidas.

Obtener valores de preferencias compartidas

De nuevo, solo una llamada a método simple con el nombre de la clave

sph.getBoolean("boolKey");
sph.getInt("intKey");
sph.getString("stringKey");
sph.getLong("longKey");
sph.getFloat("floatKey");

// getStringSet is supported only for android versions above HONEYCOMB
sph.getStringSet("name");

Tiene muchas otras funciones extendidas

Verifique los detalles de funcionalidad extendida, instrucciones de uso e instalación, etc. en la página del repositorio de GitHub .

AndroidMechanic - Viral Patel
fuente
¿Utilizo el mismo objeto de preferencia compartida para almacenar todo, o creo nuevos objetos de preferencia compartidos para cada pieza de datos diferente?
Ruchir Baronia
Debe usar lo mismo tanto como sea posible. Ese es el objetivo de hacer esta biblioteca.
AndroidMechanic - Viral Patel
Hola, tengo una pregunta sobre las preferencias compartidas. ¿Te importa contestarlo? stackoverflow.com/questions/35713822/…
Ruchir Baronia
2
SharedPreferences.Editor editor = getSharedPreferences("identifier", 
MODE_PRIVATE).edit();
//identifier is the unique to fetch data from your SharedPreference.


editor.putInt("keyword", 0); 
// saved value place with 0.
//use this "keyword" to fetch saved value again.
editor.commit();//important line without this line your value is not stored in preference   

// fetch the stored data using ....

SharedPreferences prefs = getSharedPreferences("identifier", MODE_PRIVATE); 
// here both identifier will same

int fetchvalue = prefs.getInt("keyword", 0);
// here keyword will same as used above.
// 0 is default value when you nothing save in preference that time fetch value is 0.

necesita usar SharedPreferences en AdapterClass o cualquier otro. esa vez solo usa esta declaración y usa el mismo culo de arriba.

SharedPreferences.Editor editor = context.getSharedPreferences("idetifier", 
Context.MODE_PRIVATE).edit();
SharedPreferences prefs = context.getSharedPreferences("identifier", Context.MODE_PRIVATE);

//here context is your application context

para cadena o valor booleano

editor.putString("stringkeyword", "your string"); 
editor.putBoolean("booleankeyword","your boolean value");
editor.commit();

buscar datos iguales a los anteriores

String fetchvalue = prefs.getString("keyword", "");
Boolean fetchvalue = prefs.getBoolean("keyword", "");
Vishal 05
fuente
2

2.para almacenar en preferencia compartida

SharedPreferences.Editor editor = 
getSharedPreferences("DeviceToken",MODE_PRIVATE).edit();
                    editor.putString("DeviceTokenkey","ABABABABABABABB12345");
editor.apply();

2.para recuperar el mismo uso

    SharedPreferences prefs = getSharedPreferences("DeviceToken", 
 MODE_PRIVATE);
  String deviceToken = prefs.getString("DeviceTokenkey", null);
Syed Danish Haider
fuente
1

Aquí he creado una clase Helper para usar preferencias en Android.

Esta es la clase auxiliar:

public class PrefsUtil {

public static SharedPreferences getPreference() {
    return PreferenceManager.getDefaultSharedPreferences(Applicatoin.getAppContext());
}

public static void putBoolean(String key, boolean value) {
    getPreference().edit().putBoolean(key, value)
            .apply();
}

public static boolean getBoolean(String key) {
    return getPreference().getBoolean(key, false);
}

public static void putInt(String key, int value) {

    getPreference().edit().putInt(key, value).apply();

}

public static void delKey(String key) {

    getPreference().edit().remove(key).apply();

}

}
Manokar
fuente
1

Para almacenar y recuperar variables globales de una manera funcional. Para probar, asegúrese de tener elementos Textview en su página, elimine el comentario de las dos líneas en el código y ejecútelo. Luego comente las dos líneas nuevamente y corra.
Aquí la identificación de TextView es nombre de usuario y contraseña.

En cada clase donde desee usarlo, agregue estas dos rutinas al final. Me gustaría que esta rutina sea rutinas globales, pero no sé cómo. Esto funciona.

Las variables están disponibles en todas partes. Almacena las variables en "MyFile". Puedes cambiarlo a tu manera.

Lo llamas usando

 storeSession("username","frans");
 storeSession("password","!2#4%");***

el nombre de usuario variable se completará con "frans" y la contraseña con "! 2 # 4%". Incluso después de un reinicio están disponibles.

y lo recuperas usando

 password.setText(getSession(("password")));
 usernames.setText(getSession(("username")));

debajo del código completo de mi grid.java

    package nl.yentel.yenteldb2;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.TextView;

    public class Grid extends AppCompatActivity {
    private TextView usernames;
    private TextView password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_grid);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

      ***//  storeSession("username","[email protected]");
        //storeSession("password","mijn wachtwoord");***
        password = (TextView) findViewById(R.id.password);
        password.setText(getSession(("password")));
        usernames=(TextView) findViewById(R.id.username);
        usernames.setText(getSession(("username")));
    }

    public void storeSession(String key, String waarde) { 
        SharedPreferences pref = getApplicationContext().getSharedPreferences("MyFile", MODE_PRIVATE);
        SharedPreferences.Editor editor = pref.edit();
        editor.putString(key, waarde);
        editor.commit();
    }

    public String getSession(String key) {
//http://androidexample.com/Android_SharedPreferences_Basics/index.php?view=article_discription&aid=126&aaid=146
        SharedPreferences pref = getApplicationContext().getSharedPreferences("MyFile", MODE_PRIVATE);
        SharedPreferences.Editor editor = pref.edit();
        String output = pref.getString(key, null);
        return output;
    }

    }

a continuación encontrará los elementos de vista de texto

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="usernames"
    android:id="@+id/username"
    android:layout_below="@+id/textView"
    android:layout_alignParentStart="true"
    android:layout_marginTop="39dp"
    android:hint="hier komt de username" />

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="password"
    android:id="@+id/password"
    android:layout_below="@+id/user"
    android:layout_alignParentStart="true"
    android:hint="hier komt het wachtwoord" />
Frans eilering
fuente
1

He creado una clase de ayuda para facilitar mi vida. Esta es una clase genérica y tiene muchos métodos que se usan comúnmente en aplicaciones como Preferencias compartidas, Validez del correo electrónico, Formato de fecha y hora. Copie esta clase en su código y acceda a sus métodos donde lo necesite.

 import android.app.AlertDialog;
 import android.app.ProgressDialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.SharedPreferences;
 import android.support.v4.app.FragmentActivity;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.EditText;
 import android.widget.Toast;

 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Random;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;

/**
* Created by Zohaib Hassan on 3/4/2016.
*/
 public class Helper {

private static ProgressDialog pd;

public static void saveData(String key, String value, Context context) {
    SharedPreferences sp = context.getApplicationContext()
            .getSharedPreferences("appData", 0);
    SharedPreferences.Editor editor;
    editor = sp.edit();
    editor.putString(key, value);
    editor.commit();
}

public static void deleteData(String key, Context context){
    SharedPreferences sp = context.getApplicationContext()
            .getSharedPreferences("appData", 0);
    SharedPreferences.Editor editor;
    editor = sp.edit();
    editor.remove(key);
    editor.commit();

}

public static String getSaveData(String key, Context context) {
    SharedPreferences sp = context.getApplicationContext()
            .getSharedPreferences("appData", 0);
    String data = sp.getString(key, "");
    return data;

}




public static long dateToUnix(String dt, String format) {
    SimpleDateFormat formatter;
    Date date = null;
    long unixtime;
    formatter = new SimpleDateFormat(format);
    try {
        date = formatter.parse(dt);
    } catch (Exception ex) {

        ex.printStackTrace();
    }
    unixtime = date.getTime();
    return unixtime;

}

public static String getData(long unixTime, String formate) {

    long unixSeconds = unixTime;
    Date date = new Date(unixSeconds);
    SimpleDateFormat sdf = new SimpleDateFormat(formate);
    String formattedDate = sdf.format(date);
    return formattedDate;
}

public static String getFormattedDate(String date, String currentFormat,
                                      String desiredFormat) {
    return getData(dateToUnix(date, currentFormat), desiredFormat);
}




public static double distance(double lat1, double lon1, double lat2,
                              double lon2, char unit) {
    double theta = lon1 - lon2;
    double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2))
            + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2))
            * Math.cos(deg2rad(theta));
    dist = Math.acos(dist);
    dist = rad2deg(dist);
    dist = dist * 60 * 1.1515;
    if (unit == 'K') {
        dist = dist * 1.609344;
    } else if (unit == 'N') {
        dist = dist * 0.8684;
    }
    return (dist);
}

/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* :: This function converts decimal degrees to radians : */
/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
private static double deg2rad(double deg) {
    return (deg * Math.PI / 180.0);
}

/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* :: This function converts radians to decimal degrees : */
/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
private static double rad2deg(double rad) {
    return (rad * 180.0 / Math.PI);
}

public static int getRendNumber() {
    Random r = new Random();
    return r.nextInt(360);
}

public static void hideKeyboard(Context context, EditText editText) {
    InputMethodManager imm = (InputMethodManager) context
            .getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}

public static void showLoder(Context context, String message) {
    pd = new ProgressDialog(context);

    pd.setCancelable(false);
    pd.setMessage(message);
    pd.show();
}

public static void showLoderImage(Context context, String message) {
    pd = new ProgressDialog(context);
    pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    pd.setCancelable(false);
    pd.setMessage(message);
    pd.show();
}

public static void dismissLoder() {
    pd.dismiss();
}

public static void toast(Context context, String text) {

    Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}
/*
     public static Boolean connection(Context context) {
    ConnectionDetector connection = new ConnectionDetector(context);
    if (!connection.isConnectingToInternet()) {

        Helper.showAlert(context, "No Internet access...!");
        //Helper.toast(context, "No internet access..!");
        return false;
    } else
        return true;
}*/

public static void removeMapFrgment(FragmentActivity fa, int id) {

    android.support.v4.app.Fragment fragment;
    android.support.v4.app.FragmentManager fm;
    android.support.v4.app.FragmentTransaction ft;
    fm = fa.getSupportFragmentManager();
    fragment = fm.findFragmentById(id);
    ft = fa.getSupportFragmentManager().beginTransaction();
    ft.remove(fragment);
    ft.commit();

}

public static AlertDialog showDialog(Context context, String message) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setMessage(message);

    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int id) {
            // TODO Auto-generated method stub

        }
    });

    return builder.create();
}

public static void showAlert(Context context, String message) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Alert");
    builder.setMessage(message)
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.dismiss();
                }
            }).show();
}

public static boolean isURL(String url) {
    if (url == null)
        return false;

    boolean foundMatch = false;
    try {
        Pattern regex = Pattern
                .compile(
                        "\\b(?:(https?|ftp|file)://|www\\.)?[-A-Z0-9+&#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]\\.[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]",
                        Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
        Matcher regexMatcher = regex.matcher(url);
        foundMatch = regexMatcher.matches();
        return foundMatch;
    } catch (PatternSyntaxException ex) {
        // Syntax error in the regular expression
        return false;
    }
}

public static boolean atLeastOneChr(String string) {
    if (string == null)
        return false;

    boolean foundMatch = false;
    try {
        Pattern regex = Pattern.compile("[a-zA-Z0-9]",
                Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
        Matcher regexMatcher = regex.matcher(string);
        foundMatch = regexMatcher.matches();
        return foundMatch;
    } catch (PatternSyntaxException ex) {
        // Syntax error in the regular expression
        return false;
    }
}

public static boolean isValidEmail(String email, Context context) {
    String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
    CharSequence inputStr = email;
    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(inputStr);
    if (matcher.matches()) {
        return true;
    } else {
        // Helper.toast(context, "Email is not valid..!");

        return false;
    }
}

public static boolean isValidUserName(String email, Context context) {
    String expression = "^[0-9a-zA-Z]+$";
    CharSequence inputStr = email;
    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(inputStr);
    if (matcher.matches()) {
        return true;
    } else {
        Helper.toast(context, "Username is not valid..!");
        return false;
    }
}

public static boolean isValidDateSlash(String inDate) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy");
    dateFormat.setLenient(false);
    try {
        dateFormat.parse(inDate.trim());
    } catch (ParseException pe) {
        return false;
    }
    return true;
}

public static boolean isValidDateDash(String inDate) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd-mm-yyyy");
    dateFormat.setLenient(false);
    try {
        dateFormat.parse(inDate.trim());
    } catch (ParseException pe) {
        return false;
    }
    return true;
}

public static boolean isValidDateDot(String inDate) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd.mm.yyyy");
    dateFormat.setLenient(false);
    try {
        dateFormat.parse(inDate.trim());
    } catch (ParseException pe) {
        return false;
    }
    return true;
}

}
Zohaib Hassan
fuente