2 回答
![?](http://img1.sycdn.imooc.com/533e4d510001c2ad02000200-100-100.jpg)
TA贡献1827条经验 获得超8个赞
整个方法相当有问题,因为有一个匿名身份验证提供程序,它应该用于那些“非成员”(也可以与安全规则一起使用)。存储身份验证的状态Preferences
很容易出错,因为它没有考虑身份验证的实际状态 -access denied
一旦令牌过期,这将导致。
我也看到了你之前的问题,但整个业务逻辑是有缺陷的。
...最好参见AccountManager,了解如何在 Android 上正确存储帐户。
![?](http://img1.sycdn.imooc.com/5458478b0001f01502200220-100-100.jpg)
TA贡献1804条经验 获得超2个赞
你需要做这样的事情,
MainActivity-> SignIn-> 如果登录成功 -> 下次启动应用程序时登陆HomeActivity
尝试这个,
1.) 首先,您定义一个新的boolean首选项键,USER_LOGGED_IN并在您的类中创建setUserLoggedIn()和getUserLoggedIn()方法AppPreferences如下。
private static final boolean USER_LOGGED_IN = false;
public static void setUserLoggedIn(boolean value) {
String TAG = "AppPref:setUserLoggedIn";
try{
editor.putBoolean(USER_LOGGED_IN, value);
editor.commit();
} catch (Exception e) {
Log.e(TAG, String.valueOf(e));
}
}
public static boolean getUserLoggedIn() {
return sharedPreferences.getBoolean(USER_LOGGED_IN, false);
}
2.) 然后,在您的SignIn活动中,如果登录成功,将 UserLoggedIn 设置为true您的sharedPreferences.
3.) 最后,在你的MainActivity,override onResume()方法如下,
@Override
protected void onResume() {
super.onResume();
boolean userLoggedIn = AppPreferences.getUserLoggedIn();
if(userLoggedIn){
MainActivity.this.startActivity(new Intent(getApplicationContext(), Home.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));
}
}
试试这个,让我知道你的反馈。谢谢!
添加回答
举报