2012-04-18 12 views
21

sto creando il login nella mia app. L'utente digita le sue informazioni lo mando al servizio web per controllare e ottenere il suo ID. Ora ho bisogno di salvarlo da qualche parte nella mia app che potrei controllare se avesse accesso.Salvataggio delle informazioni utente nelle impostazioni dell'applicazione

Quindi, dove queste informazioni devono essere salvate? So che ogni app ha le sue impostazioni quindi dovrebbero esserci queste informazioni? Forse qualcuno potrebbe darmi maggiori informazioni su cosa e come sta facendo.

Grazie.

ho trovato questo post: What is the most appropriate way to store user settings in Android application

Credo che la mia domanda era duplicato. Ma sarebbe bello se tu avessi qualcosa da condividere di più.

risposta

54

Prima di tutto salvare dell'utente informazioni come uname & password SharedPreferences con questo codice.

SharedPreferences settings = getSharedPreferences("UserInfo", 0); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("Username",txtUname.getText().toString()); 
editor.putString("Password",txtPWD.getText().toString()); 
editor.commit(); 

e quindi ottenere SharedPreferences dal basso codice

SharedPreferences settings = getSharedPreferences("UserInfo", 0); 
txtUname.setText(settings.getString("Username", "").toString()); 
txtPWD.setText(settings.getString("Password", "").toString()); 
+1

Per chiunque chiedendo circa compatiility, questo è supportato in tutte le versioni API attuali (aggiunto in API V1). La documentazione di SharedPreferences può essere trovata qui: http://developer.android.it/reference/android/content/SharedPreferences.html – JakeJ

+10

Per chi si interroga sulla sicurezza, non memorizzare la password dell'utente in SharedPreferences. –

+5

Non si deve MAI salvare password semplici in applicazioni o database. Invece di salvare il testo in chiaro, puoi cancellarlo. Quando hai bisogno di convalidare il dato userpasword puoi farlo sullo stesso modo e confrontare gli hash. In questo modo è molto meglio del testo normale. – RoDo

7

Per questo è possibile utilizzare SharedPreferences.

Alcuni codici da riferimenti (taken from documentation):

public class Calc extends Activity { 
    public static final String PREFS_NAME = "MyPrefsFile"; 

    @Override 
    protected void onCreate(Bundle state){ 
     super.onCreate(state); 
     . . . 

     // Restore preferences 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     boolean silent = settings.getBoolean("silentMode", false); 
     setSilent(silent); 
    } 

    @Override 
    protected void onStop(){ 
     super.onStop(); 

     // We need an Editor object to make preference changes. 
     // All objects are from android.context.Context 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putBoolean("silentMode", mSilentMode); 

     // Commit the edits! 
     editor.commit(); 
    } 
} 
22

risposta è usare l'applicazione Classe o preferenze condivise

presumo si può facilmente cercare l'esempio di Application Class, SharedPreferences e SQLite Database

Quindi sto citando Dove posso utilizzare opzioni che

Application Class

Quando ho ottenuto nulla (var, array, lista, oggetti) per memorizzare solo ed esclusivamente per la durata del Application..and Come si avvicinava (per Android Force Close) Io uso Application Class.

SharedPreferences

Io uso questo quando ho ottenuto alcune informazioni brevi come id, pegno, nome utente, bandiere e voglio archiviare che, fintanto che il resto applicazione nel Device..and bisogno di usare quelle informazioni ogni volta ho Avviare l'applicazione ..

SQLite Database

quando v'è una massa di dati in formato record (riga - colonna) ho usato per memorizzare nel database così diventa facile da memorizzare, retrive e manipolare.

0

se l'utente cancellare i dati dell'applicazione da impostazione -> gestione applicazioni -> l'applicazione -> Cancella dati

quindi tutti i dati salvati nelle preferenze condivise otterrà rimosso

+1

Oh davvero? Wow, grazie per avermelo fatto notare Mi chiedo se questo vale anche per i database SQLite – MobileMon

+2

Sì, è confermato, anche i database vengono cancellati. La finestra di dialogo di conferma mi dice che tutti i "File, impostazioni, account, database, ecc." Verranno eliminati definitivamente. Impara qualcosa di nuovo ogni giorno ... – MobileMon

Problemi correlati