Comment utiliser SharedPreferences dans Android pour stocker, récupérer et modifier des valeurs [fermé]

599

Je souhaite stocker une valeur de temps et dois la récupérer et la modifier. Comment puis-je m'en servir SharedPreferences?

Muhammad Maqsoodur Rehman
la source
J'ai implémenté un wrapper Generic SharedPreferences, jetez un œil: android-know-how-to.blogspot.co.il/2014/03/…
TacB0sS
Une approche simplifiée serait d'utiliser cette bibliothèque: github.com/viralypatel/Android-SharedPreferences-Helper ... détails techniques étendus dans ma réponse ici ...
AndroidMechanic - Viral Patel

Réponses:

838

Pour obtenir des préférences partagées, utilisez la méthode suivante dans votre activité:

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

Pour lire les préférences:

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

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

Pour modifier et enregistrer les préférences

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

L'exemple de répertoire du sdk android contient un exemple de récupération et de stockage des préférences partagées. Il est situé dans:

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

Modifier ==>

J'ai remarqué qu'il est important d'écrire également la différence entre commit()et apply()ici.

commit()retourner truesi la valeur a bien été enregistrée sinon false. Il enregistre les valeurs dans SharedPreferences de manière synchrone .

apply()a été ajouté en 2.3 et ne renvoie aucune valeur en cas de succès ou d'échec. Il enregistre immédiatement les valeurs dans SharedPreferences mais démarre une validation asynchrone . Plus de détails ici .

naikus
la source
Ainsi, la prochaine fois que l'utilisateur exécutera mon application, la valeur stockée est déjà là et je peux la récupérer ... non?
Muhammad Maqsoodur Rehman le
4
(Pour tous ceux qui lisent ce qui précède) Oui, c'est arbitraire. Cet exemple enregistre simplement la date actuelle en tant que préférence avec la clé "com.example.app.datetime".
MSpeed
1
this.getSharedPreferencesme donne l'erreur suivante:The method getSharedPreferences(String, int) is undefined for the type MyActivity
Si8
15
SharedPreferences.Editor.apply () a été introduit dans Gingerbread en novembre 2010 (après la publication de cette réponse). Utilisez-le au lieu de commit () dans la mesure du possible car apply () est plus efficace.
UpLate
4
Editor.apply () nécessite une API de niveau 9 ou supérieur. ci-dessous, utilisez Editor.commit ()
Lennart Rolland
283

Pour stocker des valeurs dans des préférences partagées:

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

Pour récupérer des valeurs à partir des préférences partagées:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("Name", "");
if(!name.equalsIgnoreCase(""))
{
    name = name + "  Sethi";  /* Edit the value here*/
}
Harneet Kaur
la source
17
J'aime mieux cette réponse car elle utilise getDefaultSharedPreferences. Pour la plupart des utilisateurs, cela simplifiera les choses car les mêmes préférences sont accessibles dans toute l'application et vous n'avez pas à vous soucier de nommer votre fichier de préférences. Plus d'informations à ce sujet ici: stackoverflow.com/a/6310080/1839500
Dick Lucas
Je suis d'accord ... J'ai trouvé cela après m'être arraché les cheveux en essayant de comprendre pourquoi je ne pouvais pas accéder à mes préférences partagées à partir d'une autre activité en utilisant la méthode dans la réponse acceptée. Merci beaucoup!
You'reAGitForNotUsingGit
Comment puis-je l'utiliser pour enregistrer et charger Map<DateTime, Integer>?
Dmitry
Utilisez github.com/AliEsaAssadi/Android-Power-Preference pour simplifier la mise en œuvre
Ali Asadi
164

Pour modifier des données 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();

Pour récupérer des données 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);
  }*/
}

Éditer

J'ai pris cet extrait de l'exemple de démonstration de l'API. Il y avait une EditTextboîte là-bas. En cela, contextce n'est pas obligatoire. Je fais le même commentaire.

DeRagan
la source
12
+1, mais utilisez getPreferences (MODE_PRIVATE); au lieu de getPreferences (0); pour la lisibilité.
Clé
Qu'est-ce que mSaved ici? Je dois enregistrer 2 valeurs de chaîne.
Muhammad Maqsoodur Rehman le
J'aimerais également savoir ce qu'est mSaved. Nvm je pense que c'est la boîte d'édition
karlstackoverflow
1
ce que -1 signifie dans getInt ??
amr osama
1
C'est la valeur par défaut qui sera retournée si la clé (selection-start) n'existe pas dans sharedpreferences. Elle peut être n'importe quoi et est juste pour votre référence.
DeRagan
39

Écrire :

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();

Lire :

SharedPreferences prfs = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
String Astatus = prfs.getString("Authentication_Status", "");
stackoverflow
la source
MODE_WORLD_WRITEABLE est obsolète.
Christopher Smit
28

Manière la plus simple:

Sauver:

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

À récupérer:

your_variable = getPreferences(MODE_PRIVATE).getString("Name of variable",default value);
ArcDare
la source
J'ai essayé cela entre les activités et cela n'a pas fonctionné. La structure du package doit-elle être incluse dans le nom var?
Gaʀʀʏ
Pour utiliser cette structure entre les activités, remplacez getPreferences (MODE_PRIVATE) par PreferenceManager.getDefaultSharedPreferences (votre activité)
Lucian Novac
Utilisez apply () au lieu de commit ()
Vaibhav
18

Définition des valeurs dans Préférence:

// 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();

Récupérez les données de préférence:

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.
}

Plus d'informations:

Utilisation des préférences partagées

Préférences partagées

Jorgesys
la source
Qu'est-ce que MyPrefsFile? Le xml de l'activité de préférence?
Martin Erlic
17

Classe de préférences partagées singleton. cela peut aider d'autres à l'avenir.

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();
    }
}

Il suffit d' appeler SharedPref.init()sur MainActivityune fois

SharedPref.init(getApplicationContext());

Pour écrire des données

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.

Pour lire les données

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
la source
15

Pour stocker des informations

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();

Pour réinitialiser vos préférences

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

Si vous créez une grande application avec d'autres développeurs de votre équipe et que vous avez l'intention de tout organiser correctement sans code dispersé ou différentes instances de SharedPreferences, vous pouvez faire quelque chose comme ceci:

//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);
    }
}

Dans votre activité, vous pouvez enregistrer les préférences partagées de cette façon

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

et vous pouvez récupérer vos SharedPreferences de cette façon

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

Dans toute application, il existe des préférences par défaut accessibles via l' PreferenceManagerinstance et sa méthode associée getDefaultSharedPreferences(Context).

Avec l' SharedPreferenceinstance, on peut récupérer la valeur int de la préférence any avec getInt (String key, int defVal) . La préférence qui nous intéresse dans ce cas est contre.

Dans notre cas, nous pouvons modifier l' SharedPreferenceinstance dans notre cas en utilisant le edit () et utiliser le putInt(String key, int newVal)Nous avons augmenté le nombre de notre application qui persiste au-delà de l'application et affiché en conséquence.

Pour poursuivre la démonstration, redémarrez et votre application à nouveau, vous remarquerez que le nombre augmentera à chaque redémarrage de l'application.

PreferencesDemo.java

Code:

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

Code:

<?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
la source
8

Solution simple pour stocker la valeur de connexion dans par SharedPreferences.

Vous pouvez étendre la MainActivityclasse ou une autre classe où vous stockerez la "valeur de quelque chose que vous souhaitez conserver". Mettez cela dans les classes d'écrivain et de lecteur:

public static final String GAME_PREFERENCES_LOGIN = "Login";

Voici respectivement la classe d' InputClassentrée et OutputClassla classe de sortie.

// 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();

Vous pouvez maintenant l'utiliser ailleurs, comme une autre classe. Ce qui suit est 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
la source
8

Stocker dans SharedPreferences

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

Récupérer dans SharedPreferences

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

Remarque: "temp" est le nom des préférences partagées et "name" est la valeur d'entrée. si la valeur ne sort pas, retourne null

Ravi Parsania
la source
Très bon et facile à utiliser .Mais voici Context.MODE_PRIVATE pas getApplicationContext (). MODE_PRIVATE
Maria Gheorghe
7

Éditer

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

Lis

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

L'idée de base de SharedPreferences est de stocker des choses sur un fichier XML.

  1. Déclarez le chemin de votre fichier xml. (Si vous n'avez pas ce fichier, Android le créera. Si vous avez ce fichier, Android y accédera.)

    SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
  2. Écrire la valeur dans les préférences partagées

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

    l' preference_file_keyest le nom des fichiers de préférences partagées. Et 1010101c'est la valeur que vous devez stocker.

    apply()est enfin de sauvegarder les modifications. Si vous obtenez une erreur apply(), remplacez-la par commit(). Donc, cette phrase alternative est

    prefs.edit().putLong("preference_file_key", 1010101).commit();
  3. Lire à partir des préférences partagées

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

    lspsera -1si preference_file_keyn'a aucune valeur. Si 'preference_file_key' a une valeur, il retournera la valeur de this.

Tout le code d'écriture est

    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.

Le code de lecture est

    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
kakarott
la source
Editor.apply () nécessite une API de niveau 9 ou supérieur. ci-dessous, utilisez Editor.commit ()
Lennart Rolland
6

Vous pouvez économiser de la valeur en utilisant cette méthode:

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();
    }

Et en utilisant cette méthode, vous pouvez obtenir de la valeur de SharedPreferences:

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

Voici prefKeyla clé que vous avez utilisée pour enregistrer la valeur spécifique. Merci.

Md. Sajedul Karim
la source
Et les booléens?
Yousha Aleayoub
enregistrer en utilisant cette ligne: editor.putString (clé, valeur); utilisez cette ligne: Boolean yourLocked = prefs.getBoolean ("verrouillé", false);
Md. Sajedul Karim
6
editor.putString("text", mSaved.getText().toString());

Ici, mSavedpeut être n'importe lequel TextViewou EditTextd'où nous pouvons extraire une chaîne. vous pouvez simplement spécifier une chaîne. Ici, le texte sera la clé qui contient la valeur obtenue à partir du mSaved( TextViewou EditText).

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

De plus, il n'est pas nécessaire d'enregistrer le fichier de préférences en utilisant le nom du package, c'est-à-dire "com.example.app". Vous pouvez mentionner votre propre nom préféré. J'espère que cela t'aides !

java dev
la source
5

Il existe plusieurs façons de recommander l'utilisation de SharedPreferences . J'ai fait un projet de démonstration ici . Le point clé de l'exemple est d'utiliser ApplicationContext et un seul objet sharedpreferences . Cela montre comment utiliser SharedPreferences avec les fonctionnalités suivantes: -

  • Utilisation de la classe singelton pour accéder / mettre à jour SharedPreferences
  • Pas besoin de toujours passer le contexte pour les SharedPreferences en lecture / écriture
  • Il utilise apply () au lieu de commit ()
  • apply () est asynchronus save, ne renvoie rien, il met à jour la valeur en mémoire en premier et les modifications sont écrites sur le disque plus tard de manière asynchrone.
  • commit () est synchronus save, il retourne vrai / faux en fonction du résultat. Les modifications sont écrites sur le disque de manière synchrone
  • fonctionne sur les versions Android 2.3+

Exemple d'utilisation comme ci-dessous: -

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

Obtenez le code source ici et les API détaillées peuvent être trouvées ici sur developer.android.com

Akhil
la source
Hé, j'ai une question sur les préférences partagées. Ça vous dérange d'y répondre? stackoverflow.com/questions/35713822/…
Ruchir Baronia
5

Les meilleures pratiques de tous les temps

Créer une interface nommée avec 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);

}

Comment utiliser avec l' activité / le fragment :

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);
    }
}

Remarque: Remplacez votre clé de SharedPreference par SP_TITLE .

Exemples:

Enregistrer la chaîne dans shareperence :

setString("my_key", "my_value");

Obtenir une chaîne de shareperence :

String strValue = getString("my_key");

J'espère que cela vous aidera.

Hiren Patel
la source
Dois-je utiliser le même objet de préférence partagé pour tout stocker, ou dois-je créer de nouveaux objets préférés partagés pour chaque élément de données différent?
Ruchir Baronia
@Ruchir Baronia, pas besoin de créer des objets différents, d'ailleurs vous n'avez pas besoin d'initialiser l'objet des préférences partagées. Vous pouvez enregistrer par ci-dessus. Faites-moi savoir si quelque chose est nécessaire de mon côté.
Hiren Patel
D'accord merci. Peux-tu m'aider avec ceci? stackoverflow.com/questions/35235759/…
Ruchir Baronia
@Ruchir Baronia, vous pouvez annuler le fil. J'espère que cela vous aidera.
Hiren Patel
Oh, je suis désolé, je mets le mauvais question.I voulait poser à ce sujet, ses préférences en matière de partage :) stackoverflow.com/questions/35244256/issue-with-if-statement/...
Ruchir Baronia
5

Pour stocker des valeurs dans des préférences partagées:

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

Pour récupérer des valeurs à partir des préférences partagées:

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

sauver

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

récupérer:

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

la valeur par défaut est: Valeurs à renvoyer si cette préférence n'existe pas.

vous pouvez changer " ceci " avec getActivity () ou getApplicationContext () dans certains cas

Nadir Belhaj
la source
Hé, j'ai une question sur les préférences partagées. Ça vous dérange d'y répondre? stackoverflow.com/questions/35713822/…
Ruchir Baronia
Oui, je l'ai fait ... :)
Ruchir Baronia
3

J'écris une classe d'aide pour les préférences partagées:

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;
}

}
Infliger
la source
3

Utilisez cet exemple simple et clair et vérifié

<?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
la source
2

En utilisant cette bibliothèque simple , voici comment effectuer les appels à 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
la source
2

Je voulais ajouter ici que la plupart des extraits de cette question auront quelque chose comme MODE_PRIVATE lors de l'utilisation de SharedPreferences. Eh bien, MODE_PRIVATE signifie que tout ce que vous écrivez dans cette préférence partagée ne peut être lu que par votre application.

Quelle que soit la clé que vous transmettez à la méthode getSharedPreferences (), Android crée un fichier avec ce nom et y stocke les données de préférence. Souvenez-vous également que getSharedPreferences () est censé être utilisé lorsque vous avez l'intention d'avoir plusieurs fichiers de préférences pour votre application. Si vous avez l'intention d'utiliser un seul fichier de préférences et d'y stocker toutes les paires clé-valeur, utilisez la méthode getSharedPreference (). C'est bizarre pourquoi tout le monde (y compris moi-même) utilise simplement la saveur getSharedPreferences () sans même comprendre la différence entre les deux ci-dessus.

Le didacticiel vidéo suivant devrait aider https://www.youtube.com/watch?v=2PcAQ1NBy98

Sandeep
la source
2

Simple et sans tracas :: bibliothèque "Android-SharedPreferences-Helper"

Mieux vaut tard que jamais: j'ai créé la bibliothèque "Android-SharedPreferences-Helper" pour aider à réduire la complexité et l'effort d'utilisation SharedPreferences. Il fournit également des fonctionnalités étendues. Peu de choses qu'il offre sont les suivantes:

  • Initialisation et configuration sur une ligne
  • Sélection facile de l'utilisation des préférences par défaut ou d'un fichier de préférences personnalisé
  • Valeurs par défaut prédéfinies (type de données par défaut) et personnalisables (ce que vous pouvez choisir) pour chaque type de données
  • Possibilité de définir différentes valeurs par défaut pour une utilisation unique avec juste un paramètre supplémentaire
  • Vous pouvez enregistrer et désinscrire OnSharedPreferenceChangeListener comme vous le faites pour la classe par défaut
dependencies {
    ...
    ...
    compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar')
}

Déclaration d'objet SharedPreferencesHelper: (recommandé au niveau de la classe)

SharedPreferencesHelper sph; 

Instanciation de l'objet SharedPreferencesHelper: (recommandé dans la méthode 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

Mettre des valeurs dans les préférences partagées

Assez simple! Contrairement à la méthode par défaut (lors de l'utilisation de la classe SharedPreferences), vous n'aurez PAS besoin d'appeler .edit()et .commit()jamais de temps.

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);

C'est ça! Vos valeurs sont stockées dans les préférences partagées.

Obtenir des valeurs des préférences partagées

Encore une fois, un seul appel de méthode simple avec le nom de la clé.

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");

Il a beaucoup d'autres fonctionnalités étendues

Vérifiez les détails des fonctionnalités étendues, les instructions d'utilisation et d'installation, etc. sur la page du référentiel GitHub .

AndroidMechanic - Viral Patel
la source
Dois-je utiliser le même objet de préférence partagé pour tout stocker, ou dois-je créer de nouveaux objets préférés partagés pour chaque élément de données différent?
Ruchir Baronia
Vous devez utiliser autant que possible la même chose. C'est tout l'intérêt de créer cette bibliothèque.
AndroidMechanic - Viral Patel
Hé, j'ai une question sur les préférences partagées. Ça vous dérange d'y répondre? 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.

vous devez utiliser SharedPreferences dans AdapterClass ou tout autre. cette fois, utilisez cette déclaration et utilisez le même cul ci-dessus.

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

//here context is your application context

pour chaîne ou valeur booléenne

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

récupérer les données comme ci-dessus

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

2. pour le stockage en préférence partagée

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

2. pour récupérer la même utilisation

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

Ici, j'ai créé une classe Helper pour utiliser les préférences dans Android.

Voici la classe d'assistance:

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
la source
1

Pour stocker et récupérer des variables globales de manière fonctionnelle. Pour tester, assurez-vous d'avoir des éléments Textview sur votre page, décommentez les deux lignes dans le code et exécutez. Puis commentez à nouveau les deux lignes et exécutez.
Ici, l'ID de TextView est nom d'utilisateur et mot de passe.

Dans chaque classe où vous souhaitez l'utiliser, ajoutez ces deux routines à la fin. J'aimerais que cette routine soit globale, mais je ne sais pas comment. Cela marche.

Les variabels sont disponibles partout. Il stocke les variables dans "MyFile". Vous pouvez le changer à votre façon.

Vous l'appelez en utilisant

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

le nom d'utilisateur variable sera rempli avec "frans" et le mot de passe avec "! 2 # 4%". Même après un redémarrage, ils sont disponibles.

et vous le récupérez en utilisant

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

en dessous de tout le code de ma grille.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;
    }

    }

ci-dessous vous trouverez les éléments textview

<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
la source
1

J'ai créé une classe d'aide pour rendre ma vie facile. Il s'agit d'une classe générique et de nombreuses méthodes couramment utilisées dans des applications telles que les préférences partagées, la validité des e-mails, le format de la date et de l'heure. Copiez cette classe dans votre code et accédez à ses méthodes partout où vous en avez besoin.

 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
la source