web-dev-qa-db-fra.com

Android vérifier l'utilisateur connecté avant, sinon démarrer l'activité de connexion

Je souhaite que l'activité de connexion démarre lorsque l'utilisateur démarre l'application mais ne s'est pas connecté auparavant. Si une connexion réussie a été effectuée auparavant, l'application sautera la page de connexion et se déplacera vers MainMenu.Java. Ce que j'ai maintenant c'est:

    public class Login extends Activity implements OnClickListener, TaskCompleteCallback{

     first_time_check();

...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.configure);

    ...}

private boolean first_time_check() {    
    String first = mPreferences.getString("first", null);
        if((first == null)){
            Intent i = new Intent(Login.this, MainMenu.class);
             startActivity(i);
        }
        return false;
    }

...
        SharedPreferences.Editor editor = mPreferences.edit();
        editor.putString("first", value);
    ...

        editor.commit();        

        // Close the activity
        Intent i = new Intent(Login.this, MainMenu.class);
         startActivity(i);
    }           

Mais je reçois des FC. Quelque chose ne va pas avec la façon dont j'ai implémenté SharedPreferences?

32
bunbun

Votre code n'appelle jamais cela first_time_check(), donc le renvoi automatique en cas de retour d'un utilisateur ne fonctionne pas.

Vous pourriez dans onCreate() do

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    first_time_check();

    setContentView(R.layout.configure);

    ...}

Ainsi, pour un nouvel utilisateur, first_time_check() le transmettrait à la page de connexion, sinon la disposition actuelle serait affichée et il pourrait continuer sur cette page.

14
Heiko Rupp

Vous utilisez des préférences partagées. Ça c'est bon.

Il y a un petit exemple donné dans ce lien. Cela résoudra probablement le problème.

http://developer.Android.com/guide/topics/data/data-storage.html

Fondamentalement, je ne vous vois pas lire la valeur stockée. Vous le stockez puis le validez. Mais il n'y a pas de code où vous le lisez. Ce n'est que lorsque vous le lisez que vous pouvez décider quelle activité doit être lancée. Vous devez appeler first_time_check () pour résoudre ce problème.

J'espère que j'ai pu vous aider.

5
Andrew Anderson

Vous pouvez enregistrer les détails de connexion dans la méthode onSaveInstanceState (), puis les restaurer au redémarrage de votre activité. Par exemple, dans onRestore ().

1
vinoth

Ceci peut être fait de deux façons. La première consiste à les stocker dans des variables globales et la seconde à stocker les données dans les préférences partagées. voir l'exemple this .

1
Aliti