我正在开发一个应用程序,其中用户登录到他的仪表板并保持登录状态直到他退出(我的意思是如果应用程序关闭并重新启动,他仍然保持登录状态)。我正在使用SharedPreferences
来检查用户是否确实已登录。
Preference.java
public class Preference {
Context context;
SharedPreferences sharedPref;
public Preference(Context context){
this.context = context;
sharedPref = context.getSharedPreferences("LoginState", 0);
}
public boolean getIsLoggedIn(){
return sharedPref.getBoolean("State", false);
}
public void setIsLoggedIn(boolean state){
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("State", state);
editor.commit();
}
}
我在用户登录时调用函数setIsLoggedIn(true)
,在用户注销时调用setIsLoggedIn(false)
。但是如果用户已经登录,如何检查并跳过LoginActivity?
答案 0 :(得分:0)
如果LoginActivity
是启动器图标调用的默认应用活动,您只需检查其登录onCreate()
方法,并在用户登录时显示其他活动。
onCreate() {
super.onCreate();
Preference p = new Preference(this);
if(p.getIsLoggedIn()) {
finish();
// start another app activity here ...
}
// ...
}
答案 1 :(得分:0)
将此条件放入启动画面
Preference pre = new Preference(SplashScreen.this);
if(preference.getIsLoggedIn()){
// move to Login Screen
}else{
// move to your mainscreen
}
答案 2 :(得分:0)
从您的第一个活动中执行此操作
SharedPreferences.Editor editor = sharedPref.edit();
Boolean flag = sharedPref.getBoolean("state", false);
if(flag==false){
// Start your login ACTIVITY
}else{
//Start your activity which you want to hit after login
}
答案 3 :(得分:0)
我认为你应该在LoginActivity的onResume或onCreate方法中添加一些代码, 检查,如果用户已登录,如果是,则触发启动仪表板活动的意图。 这样的事情。
public void onResume() {
super.onResume();
if (Preferences.getIsLoggedIn()) {
startActivity(new Intent(this, DashboardActivity.class));
}
}