Android Studio - Login

Fermé
diijii Messages postés 23 Date d'inscription jeudi 27 septembre 2012 Statut Membre Dernière intervention 5 avril 2015 - Modifié par KX le 4/04/2015 à 12:46
diijii Messages postés 23 Date d'inscription jeudi 27 septembre 2012 Statut Membre Dernière intervention 5 avril 2015 - 5 avril 2015 à 10:44
Bonjour,

Je suis entrain de créer un login pour mon application Android. Rien de transcendant. Juste un login simple afin d'avoir un contrôle sur l'utilisateur entrant.

Pour vous donner une idée. J'ai une page d'accueil. Celle-ci contient deux boutons : sign in et sign up. Avec sign up, on se dirige sur une page qui va nous permettre de rajouter à notre database une utilisateur. Jusqu'ici pas de problème.

Dans le sign in, le but est de vérifier si le mot de passe est bien celui de l'utilisateur. Je me retrouve confronter à un problème. Vous trouvez ci-dessous mon code de la méthode checkpassword() appelée lorsque l'on appuie sur le bouton "ok" dans sign in. En l'exécutant, il m'éteint le virtual device sans autre forme de pitié.

public boolean checkpassword()
     {

         DbHelper mDbHelper = new DbHelper(this);

         SQLiteDatabase db = mDbHelper.getReadableDatabase();


         String[] projection = {
             Contract.LoginEntry.KEY_PASSWORD
     };

         String sortOrder = Contract.LoginEntry.TABLE_LOGIN + " Desc";

         String username = findViewById(R.id.et_Username).toString();
         String password = findViewById(R.id.et_Username).toString();

         Cursor c = db.query(
                 Contract.LoginEntry.TABLE_LOGIN, projection, "Username = '"+username+"'", null, null, null, sortOrder);
        //Problem avec le cursor. A voir


         if(c.getString(0).equals(password))
         {
             return true ;
         }

         return false ;
     }

Ici, vous trouvez la méthode affectée au bouton ok :

public void SignInOk(View view)
    {

        if(checkpassword()) {

            Intent intent = new Intent(SignInFrame.this, Accueil.class);

            startActivity(intent);
        }
        else
        {
            Toast.makeText(getApplicationContext(), "Wrong Password",
                    Toast.LENGTH_SHORT).show();
        }


    }

En espérant que quelqu'un arrivera à m'aider. Je vous remercie d'avance du temps que vous consacrerez à ma requête.

Diji
A voir également:

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 4/04/2015 à 12:55
Bonjour,

Je ne connais pas Android, donc Cursor non plus, mais en Java quand on a un ResultSet, il faut d'abord lui faire un next pour lire la première ligne.
Ici je pense qu'il faut faire la même chose, et qu'il te manque cette étape.

Cursor c = db.query(Contract.LoginEntry.TABLE_LOGIN, projection, "Username = '"+username+"'", null, null, null, sortOrder);

for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
    String str = c.getString(0);
    ...
}

Voir : android.database.CursorLa confiance n'exclut pas le contrôle
1
diijii Messages postés 23 Date d'inscription jeudi 27 septembre 2012 Statut Membre Dernière intervention 5 avril 2015
4 avril 2015 à 13:29
Bonjour,

Je te remercie de ta réponse. Toutefois, après avoir essayé comme tu me la conseillais aucun changement probant à noter.

Je ne comprends vraiment pas où mon code peut être faux. Il doit s'agir d'un petit détail.

N'hésitez surtout pas à proposer ou à donner votre avis. Merci d'avance.

Diji
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
4 avril 2015 à 13:48
N'ayant pas de connaissance complémentaire sur Android pour t'aider, je te conseillerais juste ça : pour empêcher le programme de planter, il faut faire de la gestion d'exceptions pour indiquer le problème.

Par exemple :

public boolean checkpassword() {
    try {
         // Tout le reste
    }
    catch (Exception e) {
        // affichage du message d'erreur
        return false; // s'il y a une erreur le mot de passe est faux
    }
}
0
diijii Messages postés 23 Date d'inscription jeudi 27 septembre 2012 Statut Membre Dernière intervention 5 avril 2015
4 avril 2015 à 15:53
Excellente idée.

Je reste ouvert à d'autres réponses.

Encore merci KX.

Salutations.
0
diijii Messages postés 23 Date d'inscription jeudi 27 septembre 2012 Statut Membre Dernière intervention 5 avril 2015
5 avril 2015 à 10:44
Une chose est sur, C'est belle et bien le cursor et seulement le cursor qui bloque. Quelqu'un serait-il utilisé cette élément ?

Merci d'avance

Diji
0