2010-11-08 3 views
1

HI All,Préférence partagée Android

J'ai trois activités. A, B & C. Où A est une activité splash et B contient un écran de connexion composé d'un ID utilisateur et d'un mot de passe et d'un bouton pour se connecter. Lorsque je clique sur connexion, il me conduit à l'écran d'accueil affiche le nom d'utilisateur sur l'écran C.

Ici, je veux mettre en œuvre Prefrence partagée afin que je puisse stocker l'ID utilisateur et mot de passe pour l'utilisateur afin que l'utilisateur n'a pas à insérer l'utilisateur et le mot de passe à nouveau & à nouveau et après l'utilisateur de l'écran spllash aller directement à l'écran d'accueil. J'ai lu plusieurs documents sur la préfrence partagée et je suis venu à savoir qu'il existe deux types de préfrence partagée, l'un est le niveau d'activité et l'autre est le niveau d'application.

Aidez-moi dans ce cas, comment puis-je mettre en œuvre cette ... ses pls très urgents ..

Répondre

3

Ceci est relativement facile. Vous pouvez enregistrer le nom d'utilisateur et mot de passe directement dans le SharedPreference comme suit:

SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context); 

p.edit().putString("username", username).commit(); 
p.edit().putString("password", password).commit(); //SECURITY HAZARD: read below... 

Ensuite, vous pouvez le récupérer comme ceci:

String username = p.getString("username", ""); 
String password = p.getString("password", ""); 

La question lors de cette opération est que le mot de passe est disponible dans le monde. Vous devez avoir un moyen d'empêcher les autres de le voir. Pour ce faire, cryptez le mot de passe lorsque vous l'enregistrez et décryptez-le lorsque vous le chargez à l'aide d'une clé symétrique. Voici un tutoriel sur le cryptage: http://android.voxisland.com/code_examples/How_to_encrypt_and_decrypt_strings.rhtml

Faites-moi savoir si cela vous aide du tout.

Emmanuel

+0

HI cher. Merci pour la réponse .... son niveau d'application ou niveau d'activité ??? et pour rappel automatique je dois l'implémenter dans l'activité A? –

+0

Niveau d'application. Rappel automatique signifie simplement que vous l'avez enregistré dans les préférences. Quand vous les obtenez, vous devriez juste vérifier s'ils sont vides et demander à l'utilisateur à nouveau. – Emmanuel

3

Ecrire à partir de l'activité A comme ceci:

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

Vous pouvez le lire ensuite avec:

SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(this); 
     String username = p.getString("YOUR_KEY", null); 
+0

salut..Merci de la réponse .. –

+0

Deuxième code j'ai besoin d'écrire dans A? pls répondre –

+0

De la 'Activity' vous avez besoin de lire les informations. Il pourrait être A, B, ou C. – Macarse

0

Ceci est la meilleure façon d'utiliser la préférence partagée simplement appeler cette méthode

Store préférence partagée

public static void setDefaults(String key, String value, Context context) { 
    SharedPreferences prefs = 
      PreferenceManager.getDefaultSharedPreferences(context); 

    SharedPreferences.Editor editor = prefs.edit(); 

    editor.putString(key, value); 

    editor.commit(); 
} 

Call cette méthode et passer l'argument comme celui-ci

Classname.setsetDefaults("key","Value",context); 

Get Shared Value

public static String getDefaults(String key, Context context) { 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
     return preferences.getString(key, null); 
    } 

Appelez cette méthode et passer clé

ClassName.getDefaults("Key",Context); 
0

à utiliser la préférence partagée dans Android

public class SharedPref { 

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

public static String getValue(String key, Context context) { 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
    return preferences.getString(key, null); 
} 
public static void setAlertDialog(Context mContext,String title,String message) 
{ 
    AlertDialog alertDialog = new AlertDialog.Builder(mContext).create(); 
    alertDialog.setTitle(title); 
    alertDialog.setMessage(message); 
    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 

        dialog.dismiss(); 
       } 
      }); 
    alertDialog.show(); 
} 

} 

et définir et obtenir la valeur de l'utilisation de la classe suivante code

SharedPref.setConfig("key","value",Context); 
SharedPref.getConfig("key",Context); 
SharedPref.setAlertDialog(Context,"title","Content to print"); 
0

Le stockage du nom d'utilisateur et du mot de passe est une mauvaise pratique, utilisez plutôt JWT. Prenez un jeton JWT de votre réponse, puis enregistrez-le dans vos préférences partagées. Si votre API ne renvoie aucun JWT en réponse, au moins hachez votre nom d'utilisateur et mot de passe avant de sauvegarder, mais il est également dangereux.

Questions connexes