Ecco quello che sto facendo quando si accede l'utente in:
private static final String APP_SHARED_PREFS = "asdasd_preferences";
SharedPreferences sharedPrefs;
Editor editor;
private boolean isUserLoggedIn;
sharedPrefs = getApplicationContext().getSharedPreferences(APP_SHARED_PREFS, Context.MODE_PRIVATE);
isUserLoggedIn = sharedPrefs.getBoolean("userLoggedInState", false);
editor = sharedPrefs.edit();
editor.putBoolean("userLoggedInState", true);
editor.putInt("currentLoggedInUserId", userId);
editor.commit();
Intent signupSuccessHome = new Intent(this, Home.class);
signupSuccessHome.putExtra("reqFrom", "login");
startActivity(signupSuccessHome);
finish();
nell'attività di base che tutte le mie attività si estendono (contiene l'ActionBar e il menu scorrevole) Ho il seguente controllo: (mainactivity è il mio login/schermo registrare se l'utente non è connesso im inviando loro ci)
@Override
protected void onResume() {
sharedPrefs = getApplicationContext().getSharedPreferences(APP_SHARED_PREFS, Context.MODE_PRIVATE);
isUserLoggedIn = sharedPrefs.getBoolean("userLoggedInState", false);
if (!isUserLoggedIn) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
super.onResume();
}
@Override
protected void onRestart() {
sharedPrefs = getApplicationContext().getSharedPreferences(APP_SHARED_PREFS, Context.MODE_PRIVATE);
isUserLoggedIn = sharedPrefs.getBoolean("userLoggedInState", false);
if (!isUserLoggedIn) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
super.onRestart();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sharedPrefs = getApplicationContext().getSharedPreferences(APP_SHARED_PREFS, Context.MODE_PRIVATE);
isUserLoggedIn = sharedPrefs.getBoolean("userLoggedInState", false);
currentlyLoggedInUser = sharedPrefs.getInt("currentLoggedInUserId", 0);
currentlyLoggedInUserString = Integer.toString(currentlyLoggedInUser);
if (!isUserLoggedIn) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
e per impedire all'utente di tornare alla schermata di accesso:. in Login.java:
isUserLoggedIn = sharedPrefs.getBoolean("userLoggedInState", false);
if (isUserLoggedIn) {
Intent intent = new Intent(this, Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
in Home.java:
@Override
public void onBackPressed() {
Intent intent = new Intent(this, Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
super.onBackPressed();
}
fonte
2013-12-14 11:36:43
Se l'applicazione memorizza solo 1 username e password, quindi il metodo è perfetto, non c'è bisogno di cambiarla. Ma se si hanno più utenti, si consiglia di utilizzare il Database SQLite. –
Ciao Stealz, le credenziali di accesso effettive vengono controllate nel server remoto. non nel cellulare. la preferenza condivisa viene utilizzata per memorizzare solo una informazione utente. – Bennet