我正在 Android 应用程序中实现登录屏幕。“记住我”和“自动登录”有复选框。请建议实现此功能的方法?
2 回答
记住我,使用共享首选项将其存储在本地(布尔值 - 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
}
在我的建议中,rememer me 的目的是不同的。
流程应该是这样的。
最初使用reisterd is 和passwrod 登录。将其存储在上述答案中提到的共享首选项中(始终建议共享首选项,尽管使用静态变量也可以实现相同的目标。但静态变量并不总是可靠的)
现在,每当启动应用程序时,为此目的检查 sharedpref 的内容,并且只有当它不为 null 时,才应提示用户再次登录
但是记住我的目的是当用户注销时,下次登录时,它应该显示以前使用的用户名/密码。当应用程序有登录时,应该有一个注销选项。注销选项应将用户带到登录页面。这里如果remeber me之前勾选了,他之前的用户名就会出现。如果未选中,这些字段将为空白。
另一个建议是只为应用程序的用户特定部分保持登录。如果用户被迫登录也看什么应用程序,它不是一个好的用户界面。
这些是一些建议