[英]Android Sharedpreference Check if the user already logged in or not
[英]Correctly check if user is logged in. Android
我有這樣的登錄設置,我使用 retrofit 從服務器進行身份驗證,並且我使用令牌 api 身份驗證:
在 MainActivity.java 方法 onCreate
apiInterface = ApiClient.getClient().create(ApiInterface.class);
User user = SharedPreferencesHelper.getUser(MainActivity.this);
if (user.getToken() == null) {
Intent login = new Intent(MainActivity.this, LoginActivity.class);
startActivity(login);
} else {
setContentView(R.layout.activity_main);
buildMain();
}
在LoginActivity.java方法上create(我總結一下,代碼挺長的)
loginbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get login ingo
Login login = new Login(scardI, passwordI, device_name);
Call<User> call = apiInterface.LoginUser(login);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
User user = response.body();
//save user info into SharedPreferences
SharedPreferencesHelper.setUser(LoginActivity.this, user);
//check if user saved correctly by getting the user token
if (SharedPreferencesHelper.getUserToken(LoginActivity.this) != null) {
finish();
}
} else {
//show error message
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
//show error message
}
});
}
});
我遇到了一個問題,在用戶登錄后顯示一個空白頁面而不是activity_main.xml
但是當我關閉應用程序並重新打開它時,它按預期將我直接帶到了activity_main.xml
。 是否有原因導致登錄后它沒有像預期的那樣將我帶到activity_main。
成功時缺少 MainActivity.java 的意圖。 因為調用了finish(),所以會顯示一個空白屏幕。
if (response.isSuccessful()) {
User user = response.body();
SharedPreferencesHelper.setUser(LoginActivity.this, user);
if (SharedPreferencesHelper.getUserToken(LoginActivity.this) != null){
Intent i = new Intent(this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(i);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.