保存用户和密码Android

时间:2015-06-09 08:41:36

标签: java android passwords

这是我的逻辑:

我有一位用户:

user = new User(newUsername, newPassword);

为用户生成随机ID +密码。

uniqueName = UUID.randomUUID().toString();
uniquePassword = UUID.randomUUID().toString();

使用对话框,用户可以更改密码,如下所示。

newUsername = userField.getText().toString();
newPassword = passwordField.getText().toString();

我将它传递给模特:

user.setUsername(newUsername);
user.setPassword(newPassword);

模型看起来像这样:

public User(String username,String password){
    this.username = username;
    this.password = password;
}

public String getUsername(){
    return username;
}

public void setUsername(String username){
    this.username = username;
}

public String getPassword(){
    return password;
}

public void setPassword(String password){
    this.password = password;
}

但是,当我关闭应用程序或更改激活密码并且用户未保存时,有关如何保存用户和密码的任何提示,以便在用户离开活动时保存密码/ ID?

我以这种方式添加了SharedPreferences:

private void savePreferences(){
    SharedPreferences settings  = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString(PREF_UNAME, newUsername);
    editor.putString(PREF_PASSWORD, newPassword);
    editor.commit();
}

private void loadPreferences(){
    SharedPreferences settings = getSharedPreferences(PREFS_NAME,
            Context.MODE_PRIVATE);

    mUsername.setText(settings.getString(PREF_UNAME, newUsername));
    mPassword.setText(settings.getString(PREF_PASSWORD, newPassword));

}

我在onPause()中调用savePreferences,在onResume()中调用loadPreferences。但是,当我关闭活动两次并再次打开它时,我存储的用户名和ID都消失了。还有其他提示吗?

5 个答案:

答案 0 :(得分:1)

您没有获得价值的原因是您的数据未被存储。应用程序关闭后,您的静态数据将丢失。您需要将数据保存在Database或SharedPreference中。

您的模型只是暂时保存数据的静态方法。

答案 1 :(得分:0)

因为您将用户保存在内存中,并且需要将其保存在SharedPreference中。

答案 2 :(得分:0)

这一切都取决于它的数据量(用户ID和密码除外)

正如@Gosu所说,如果你有小数据使用SharedPrefereces或者如果有更多的recrods和表格,那么使用SQLite

有关详细信息,请参阅:Official Site : Android Storage Options

答案 3 :(得分:0)

如果你的约束只是用户名和密码(不是用户角色和权限)那么没有太多工作的最佳方法是SharedPreferences。否则,你需要有一个像sqlite这样的数据库来维护这些信息。

答案 4 :(得分:0)

您可以使用“已保存的首选项”来保存用户。 我们可以使用gson.jar

来做到这一点
 SharedPreferences  mPrefs = getPreferences(MODE_PRIVATE);

保存

 Editor prefsEditor = mPrefs.edit();
 Gson gson = new Gson();
 String json = gson.toJson("User");
 prefsEditor.putString("MyObject", json);
 prefsEditor.commit();

获取

Gson gson = new Gson();
String json = mPrefs.getString("User", "");
MyObject obj = gson.fromJson(json, User.class);