1

我正在 Android 应用程序中实现登录屏幕。“记住我”和“自动登录”有复选框。请建议实现此功能的方法?

4

2 回答 2

5

记住我,使用共享首选项将其存储在本地(布尔值 - TRUE 或 FALSE)。如果选中该复选框,则再次使用共享首选项将用户名、密码存储在内存中。打开应用程序时,检查共享首选项是否可以提供用户名和密码的值。如果是,那么您可以自动启动登录过程。否则只显示登录屏幕。清除?

编辑 -

使用它来将值存储在登录按钮的 onClickListener 中

SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
        SharedPreferences.Editor prefsEditor = myPrefs.edit();
        prefsEditor.putString("LOGIN_ID", username_field.getText().toString());
        prefsEditor.putString("LOGIN_PSWD", password_field.getText().toString());
        prefsEditor.putBoolean("REMEMBER", checkbox.isChecked());
        prefsEditor.commit();

同样,在应用程序启动时,使用此代码读取值并登录 -

SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
        boolean isRemember = myPrefs.getBoolean("REMEMBER", false);
   if(!isRemember)
     //Go to login screen. 
else
{     
String id = myPrefs.getString("LOGIN_ID", "");
String pswd = myPrefs.getString("LOGIN_PSWD", "");
//try to autologin now with these values
}
于 2012-04-23T11:58:16.093 回答
2

在我的建议中,rememer me 的目的是不同的。

流程应该是这样的。

最初使用reisterd is 和passwrod 登录。将其存储在上述答案中提到的共享首选项中(始终建议共享首选项,尽管使用静态变量也可以实现相同的目标。但静态变量并不总是可靠的)

现在,每当启动应用程序时,为此目的检查 sharedpref 的内容,并且只有当它不为 null 时,才应提示用户再次登录

但是记住我的目的是当用户注销时,下次登录时,它应该显示以前使用的用户名/密码。当应用程序有登录时,应该有一个注销选项。注销选项应将用户带到登录页面。这里如果remeber me之前勾选了,他之前的用户名就会出现。如果未选中,这些字段将为空白。

另一个建议是只为应用程序的用户特定部分保持登录。如果用户被迫登录也看什么应用程序,它不是一个好的用户界面。

这些是一些建议

于 2012-04-23T13:14:13.987 回答