Android Studio - Login
diijii
Messages postés
24
Statut
Membre
-
diijii Messages postés 24 Statut Membre -
diijii Messages postés 24 Statut Membre -
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é.
Ici, vous trouvez la méthode affectée au bouton ok :
En espérant que quelqu'un arrivera à m'aider. Je vous remercie d'avance du temps que vous consacrerez à ma requête.
Diji
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
2 réponses
-
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-
-
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 } } -
-
-
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