2012-04-18 3 views
21

Я создаю логин в своем приложении. Пользователь вводит свою информацию, которую я отправляю в веб-службу, чтобы проверить и получить его идентификатор. Теперь мне нужно сохранить его где-нибудь в моем приложении, чтобы проверить, есть ли у него вход.Сохранение информации о пользователе в настройках приложения

Итак, где эта информация должна быть сохранена? Я знаю, что у каждого приложения есть свои настройки, поэтому должна быть эта информация? Может быть, кто-то может дать мне больше информации о том, что и как это делается.

Спасибо.

Я нашел этот пост: What is the most appropriate way to store user settings in Android application

Я считаю, что мой вопрос был дубликатом. Но было бы неплохо, если бы у вас было чем поделиться.

ответ

54

Прежде всего сохранить пользователю информацию, как uname & пароль в SharedPreferences с этим кодом.

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

, а затем получить SharedPreferences снизу код

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

Для тех, кто интересно о compatiility, это поддерживается во всех существующих версиях API (добавлено в API V1). Документацию SharedPreferences можно найти здесь: http://developer.android.com/reference/android/content/SharedPreferences.html – JakeJ

+10

Для всех, кто задается вопросом о безопасности, не храните пароль пользователя в SharedPreferences. –

+5

Вы никогда не должны сохранять простые пароли в приложениях или базах данных. Вместо сохранения простого текста вы можете его использовать. Когда вам нужно подтвердить данный пользовательский пароль, вы можете его использовать так же и сравнить хеши. Этот способ намного лучше обычного текста. – RoDo

7

Для этого можно использовать SharedPreferences.

Некоторые коды из ссылок (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

Ответ Использование приложений класса или Shared Preferences

Я предполагаю, что вы можете легко найти в примере Application Class, SharedPreferences и SQLite Database

Поэтому я упоминаю Где я могу использовать какие опции

Application Class

Когда я получил что-нибудь (Var, массив, список, объекты) для хранения как раз только для Lifetime из Application..and Как приблизились (для Android Force Close) Я использую класс приложения.

SharedPreferences

Я использую это, когда я получил некоторую короткую информацию, как идентификатор, токен, имя пользователя, флаги, и я хочу сохранить, что до тех пор, как все остальные приложения в Device..and должны использовать эту информацию каждый раз при Я запустить приложение ..

SQLite Database

Когда есть объемные данные в формате записи (строка - столбец) я использовал его для хранения в базе данных, так что становится легко хранить, retrive и манипулировать.

0

если пользователь очистить данные приложения от настройки -> Диспетчер приложений -> приложение -> четкие данные

, то все данные, сохраненные в общих настройках будут сняты

+1

О, правда? Вау благодарит за это. Интересно, верно ли это для баз данных SQLite? – MobileMon

+2

Да, его подтвердили, базы данных также протерты. Диалог подтверждения сообщает мне, что все «Файлы, настройки, учетные записи, базы данных и т. Д.» Будут удалены навсегда. Узнавайте что-то новое каждый день... – MobileMon

Смежные вопросы