2012-04-18 25 views
21

Tworzę login w mojej aplikacji. Typ użytkownika jego informacje wysyłam do serwisu internetowego, aby sprawdzić i uzyskać jego identyfikator. Teraz muszę go zapisać gdzieś w mojej aplikacji, żeby sprawdzić, czy ma login.Zapisywanie informacji o użytkowniku w ustawieniach aplikacji

Więc gdzie te informacje powinny zostać zapisane? Wiem, że każda aplikacja ma swoje ustawienia, więc powinny być te informacje? Może ktoś mógłby dać mi więcej informacji o tym, co i jak robi.

Dzięki.

Znalazłem ten post: What is the most appropriate way to store user settings in Android application

Wierzę, że moje pytanie było duplikatem. Ale byłoby miło, gdybyś miał coś, czym mógłbyś się podzielić.

Odpowiedz

54

Przede wszystkim zaoszczędzić użytkownikowi informacji jak uname & hasło w SharedPreferences z tym kodem.

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

a następnie dostać SharedPreferences z poniżej kod

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

dla każdego, kto zastanawia compatiility ta jest obsługiwana we wszystkich obecnych wersjach API (Dodano w API V1). Dokumentacja SharedPreferences można znaleźć tutaj: http://developer.android.com/reference/android/content/SharedPreferences.html – JakeJ

+10

Dla każdego, kto zastanawia się nad bezpieczeństwem, nie przechowuj hasła użytkownika w SharedPreferences. –

+5

NIGDY nie należy zapisywać zwykłych haseł w aplikacjach lub bazach danych. Zamiast zapisywać zwykły tekst, możesz go zaszyfrować. Kiedy musisz sprawdzić poprawność podanego hasła użytkownika, możesz to zrobić w ten sam sposób i porównać skróty. Ta metoda jest znacznie lepsza niż zwykły tekst. – RoDo

7

Możesz użyć do tego SharedPreferences.

Niektóre kody z referencjami (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

Odpowiedź jest Zastosowanie Klasa Application lub Shared Preferencje

Przypuszczam, można łatwo sprawdzić na przykładzie Application Class, SharedPreferences i SQLite Database

Więc wspomniałem Gdzie używać które opcje

Application Class

Kiedy mam nic (VAR, tablicy, listy, przedmioty) do przechowywania właśnie tylko dla żywotność Application..and Jak się zbliżył (dla Androida Force Close) Używam klasy aplikacji.

SharedPreferences

Używam tego kiedy mam jakieś krótkie informacje jak ID, symboliczną, nazwę użytkownika, flagi i chcę, aby zapisać, że tak długo, jak reszta aplikacji w Device..and trzeba wykorzystać te informacje za każdym razem i uruchomić aplikację ..

SQLite Database

gdy istnieje luzem danych w formacie zapisu (wiersz - kolumna) używałem go do przechowywania w bazie danych, więc staje się łatwe do przechowywania, sprowadzaniu i manipulować.

0

jeśli użytkownik wyczyścić dane aplikacji z ustawienia -> Menedżer aplikacji -> aplikacja -> Wyczyść dane

wtedy wszystkie dane zapisane w udostępnionych preferencji dostanie usunięte

+1

Och, naprawdę? Wow, dzięki za wskazanie tego. Zastanawiam się, czy to również dotyczy baz danych SQLite. – MobileMon

+2

Tak, to także wyczyszczone bazy danych są wyczyszczone. Okno dialogowe potwierdzenia mówi mi, że wszystkie "Pliki, ustawienia, konta, bazy danych itp." Zostaną trwale usunięte. Naucz się czegoś nowego codziennie ... – MobileMon

Powiązane problemy