Code android pour maintenir l'utilisateur connecté après la première authentification (SharedPreferences)
Lorsque vous créez une application nécessitant que l'utilisateur se connecte, vous devez implémenter la fonctionnalité de rappel afin que l'utilisateur ne saisisse plus le nom d'utilisateur et le mot de passe pour accéder à l'interface principale de l'application. En Android, vous pouvez utiliser SharedPreferences pour stocker les informations de connexion. Les données stockées dans les SharedPreferences ne sont pas supprimées par défaut même si vous quittez l'application. Dans ce tuto, je vais vous montrer comment stocker les informations de connexion dans les SharedPreferences et effacer les informations des SharedPreferences.
Maintenant, vous devez créer un nouveau projet Android. Modifiez ensuite le fichier activity_main.xml pour ajouter deux EditText, un CheckBox et un bouton. Un EditText est destiné à enter le nom de l'utilisateur et un autre EditText permet la saisie du mot de passe. Avec la CheckBox, l'utilisateur peut la cocher pour se souvenir de son nom d'utilisateur et du mot de passe. Le bouton est enfoncé pour valider les informations de connexion.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/txt_user"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Login"
android:inputType="text"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<EditText
android:id="@+id/txt_pwd"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<CheckBox
android:id="@+id/ch_rememberme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Rester connecté"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<Button
android:id="@+id/btlogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="doLogin"
android:layout_gravity="center"
android:text="Log in"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:textColor="#ffffff" />
</LinearLayout>
MainActivity.java
import android.content.Intent; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { public static String PREFS_NAME="mypre"; public static String PREF_USERNAME="username"; public static String PREF_PASSWORD="password"; EditText txtuser,txtpwd; String username="123"; String password="admin"; Button login; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SharedPreferences pref =
getSharedPreferences(PREFS_NAME,MODE_PRIVATE); String userna = pref.getString(PREF_USERNAME, null); String pass = pref.getString(PREF_PASSWORD, null); if (userna != null || pass != null)
{
Intent intent=new Intent(getApplicationContext(),LogoutActivity.class);intent.putExtra("user",username); startActivity(intent); } txtuser=(EditText)findViewById(R.id.txt_user); txtpwd=(EditText)findViewById(R.id.txt_pwd); login=findViewById(R.id.btlogin); login.setOnClickListener(new View.OnClickListener()
{ @Override public void onClick(View view) { if(txtuser.getText().toString().equals(username)
&& txtpwd.getText().toString().equals(password)) { CheckBox ch = (CheckBox) findViewById(R.id.ch_rememberme); if (ch.isChecked())
{ getSharedPreferences(PREFS_NAME, MODE_PRIVATE) .edit() .putString(PREF_USERNAME, username) .putString(PREF_PASSWORD, password) .commit(); Intent intent=new Intent
(getApplicationContext(), LogoutActivity.class); intent.putExtra("user",username); startActivity(intent); } else{ Toast.makeText(MainActivity.this,
"Invalid username or password", Toast.LENGTH_LONG).show(); } } } }); } }
Nous devons maintenant créer une nouvelle activité qui sert comme un tableau de bord (Espace personnel) de l'utilisateur connecté. Cette activité va contenir un bouton qui permet à l'utilisateur de se déconnecter. Le bouton de déconnexion permet d’effacer le contenu stocké auparavant dans le SharedPreferences .
activity_logout.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent">
<TextView android:id="@+id/txtuser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip" />
<Button android:id="@+id/btlogout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log out"
android:layout_below="@+id/txtuser"
/>
</RelativeLayout>
LogoutActivity.java
import android.content.Intent; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class LogoutActivity extends AppCompatActivity { String user; Button logout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_logout); //get username sent from the log in activity logout=findViewById(R.id.btlogout); Intent intent=getIntent(); Bundle b=intent.getExtras(); user=b.getString("user"); TextView v=(TextView)findViewById(R.id.txtuser); v.setText("Bonjour "+user); logout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SharedPreferences sharedPrefs =
getSharedPreferences(MainActivity.PREFS_NAME,MODE_PRIVATE); SharedPreferences.Editor editor = sharedPrefs.edit(); editor.clear(); editor.commit(); user=""; //Afficher formulaire d'authentification Intent intent=new Intent(getApplicationContext(),
MainActivity.class); startActivity(intent); } }); } }
Commentaires
Enregistrer un commentaire
Your comment will be reviewed by moderators