Oto jak wygląda moja aplikacja:
- Użytkownik onResume () jest proszony o zalogowanie
- Jeśli użytkownik się zaloguje, może kontynuować korzystanie z aplikacji 3. Jeśli użytkownik wyloguje się w dowolnym momencie, chcę ponownie poprosić o zalogowanie
Jak mogę to osiągnąć?
Oto moja główna aktywność:
@Override
protected void onResume(){
super.onResume();
isLoggedIn = prefs.getBoolean("isLoggedIn", false);
if(!isLoggedIn){
showLoginActivity();
}
}
Oto moja aktywność logowania:
@Override
protected void onPostExecute(JSONObject json) {
String authorized = "200";
String unauthorized = "401";
String notfound = "404";
String status = new String();
try {
// Get the messages array
JSONObject response = json.getJSONObject("response");
status = response.getString("status");
if(status.equals(authorized)){
Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show();
prefs.edit().putBoolean("isLoggedIn",true);
setResult(RESULT_OK, getIntent());
finish();
}
else if (status.equals(unauthorized)){
Toast.makeText(getApplicationContext(), "The username and password you provided are incorrect!",Toast.LENGTH_SHORT).show();
prefs.edit().putBoolean("isLoggedIn",true);
}
else if(status.equals(notfound)){
Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show();
prefs.edit().putBoolean("isLoggedIn",true);
}
} catch (JSONException e) {
System.out.println(e);
} catch (NullPointerException e) {
System.out.println(e);
}
}
}
Po pomyślnym zalogowaniu się użytkownika:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Toast.makeText(getApplicationContext(), "BOOM SHAKA LAKA!",Toast.LENGTH_SHORT).show();
}
}
Problem polega na tym, że onResume () jest wywoływana przed onActivityResult (), więc po pomyślnym zalogowaniu użytkownika moja główna aktywność nie jest powiadamiana, ponieważ onResume () jest wywoływana jako pierwsza.
Gdzie jest najlepsze miejsce do proszenia o logowanie?