Android - Gestion de session

Session vous aide lorsque vous souhaitez stocker des données utilisateur en dehors de votre application, de sorte que lors de la prochaine utilisation de votre application, vous pouvez facilement récupérer ses détails et effectuer en conséquence.

Cela peut être fait de plusieurs manières. Mais le moyen le plus simple et le plus agréable de le faire est deShared Preferences.

Préférences partagées

Les préférences partagées vous permettent d'enregistrer et de récupérer des données sous la forme d'une paire clé / valeur. Pour utiliser les préférences partagées, vous devez appeler une méthode getSharedPreferences () qui renvoie une instance SharedPreference pointant vers le fichier contenant les valeurs des préférences.

SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

Vous pouvez enregistrer quelque chose dans les préférences partagées à l'aide de la classe SharedPreferences.Editor. Vous appellerez la méthode d'édition de l'instance SharedPreference et la recevrez dans un objet éditeur. Sa syntaxe est -

Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();

En dehors de la méthode putString, il existe des méthodes disponibles dans la classe d'éditeur qui permettent la manipulation des données dans les préférences partagées. Ils sont répertoriés comme suit -

Sr. Non Mode et description
1

apply()

C'est une méthode abstraite. Il validera vos modifications de l'éditeur vers l'objet sharedPreference que vous appelez

2

clear()

Cela supprimera toutes les valeurs de l'éditeur

3

remove(String key)

Cela supprimera la valeur dont la clé a été passée en paramètre

4

putLong(String key, long value)

Cela enregistrera une valeur longue dans un éditeur de préférences

5

putInt(String key, int value)

Cela enregistrera une valeur entière dans un éditeur de préférences

6

putFloat(String key, float value)

Cela enregistrera une valeur flottante dans un éditeur de préférences

Gestion de session via les préférences partagées

Afin de gérer la session à partir des préférences partagées, nous devons vérifier les valeurs ou les données stockées dans les préférences partagées dans le onResumeméthode. Si nous n'avons pas les données, nous allons démarrer l'application depuis le début car elle est nouvellement installée. Mais si nous avons les données, nous partirons de l'endroit où l'utilisateur les a laissées. Il est démontré dans l'exemple ci-dessous -

Exemple

L'exemple ci-dessous illustre l'utilisation de la gestion de session. Il crée une application de base qui vous permet de vous connecter pour la première fois. Et puis, lorsque vous quittez l'application sans vous déconnecter, vous serez ramené au même endroit si vous redémarrez l'application. Mais si vous vous déconnectez de l'application, vous serez ramené à l'écran de connexion principal.

Pour expérimenter cet exemple, vous devez l'exécuter sur un appareil réel ou dans un émulateur.

Pas La description
1 Vous utiliserez l'IDE de studio Android pour créer une application Android sous un package com.example.sairamkrishna.myapplication.
2 Modifiez le fichier src / MainActivity.java pour ajouter un code de progression pour ajouter du code de session.
3 Créez une nouvelle activité et nommez-le second.java.Modifiez ce fichier pour ajouter un code de progression pour ajouter du code de session.
4 Modifiez le fichier res / layout / activity_main.xml pour ajouter le code XML correspondant.
5 Modifiez le fichier res / layout / second_main.xml pour ajouter le code XML correspondant.
sept Exécutez l'application et choisissez un appareil Android en cours d'exécution, installez l'application dessus et vérifiez les résultats.

Voici le contenu de MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
   EditText ed1,ed2,ed3;
   Button b1;
   Intent in;

   public static final String MyPREFERENCES = "MyPrefs" ;
   public static final String Name = "nameKey";
   public static final String Phone = "phoneKey";
   public static final String Email = "emailKey";
   SharedPreferences sharedpreferences;

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

      ed1=(EditText)findViewById(R.id.editText);
      ed2=(EditText)findViewById(R.id.editText2);
      ed3=(EditText)findViewById(R.id.editText3);

      b1=(Button)findViewById(R.id.button);
      sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            String n  = ed1.getText().toString();
            String ph  = ed2.getText().toString();
            String e  = ed3.getText().toString();

            SharedPreferences.Editor editor = sharedpreferences.edit();

            editor.putString(Name, n);
            editor.putString(Phone, ph);
            editor.putString(Email, e);
            editor.commit();

            in = new Intent(MainActivity.this,second_main.class);
            startActivity(in);
         }
      });
   }
}

Voici le contenu de second_main.java.

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class second_main extends Activity {
   Button bu=null;
   Button bu2=null;

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

      bu=(Button)findViewById(R.id.button2);
      bu2=(Button)findViewById(R.id.button3);
   }

   public  void logout(View view){
      SharedPreferences sharedpreferences = getSharedPreferences(MainActivity.MyPREFERENCES, Context.MODE_PRIVATE);
      SharedPreferences.Editor editor = sharedpreferences.edit();
      editor.clear();
      editor.commit();
   }

   public void close(View view){
      finish();
   }
}

Voici le contenu de activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<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" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Shared Preference"
      android:id="@+id/textView"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="35dp" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials Point"
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:textSize="35dp"
      android:textColor="#ff16ff01" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_below="@+id/textView2"
      android:layout_marginTop="67dp"
      android:hint="Name"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText2"
      android:layout_below="@+id/editText"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:hint="Pass" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText3"
      android:layout_below="@+id/editText2"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:hint="Email" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="login"
      android:id="@+id/button"
      android:layout_below="@+id/editText3"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="50dp" />

</RelativeLayout>

Voici le contenu de second_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent">
   
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Logout"
      android:onClick="logout"
      android:id="@+id/button2"
      android:layout_gravity="center_horizontal"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="191dp" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Close"
      android:onClick="close"
      android:id="@+id/button3"
      android:layout_below="@+id/button2"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="69dp" />

</RelativeLayout>

Voici le contenu de Strings.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Voici le contenu de AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
      <activity android:name=".second"></activity>
      
   </application>
</manifest>

Essayons d'exécuter votre application. Je suppose que vous avez créé votre AVD lors de la configuration de l'environnement. Pour exécuter l'application à partir du studio Android, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l' icône Exécuter dans la barre d'outils. Le studio Android installe l'application sur votre AVD et la démarre et si tout va bien avec votre configuration et votre application, elle affichera la fenêtre de l'émulateur suivant -

Tapez votre nom d'utilisateur et votre mot de passe (type anything you like, but remember what you type), et cliquez sur le bouton de connexion. Il est montré dans l'image ci-dessous -

Dès que vous cliquez sur le bouton de connexion, vous serez amené à cet écran de bienvenue. Désormais, vos informations de connexion sont stockées dans les préférences partagées.

Cliquez maintenant sur Exit without logout et vous serez ramené à l'écran d'accueil et le fichier de préférence sera comme indiqué ci-dessous l'image

Si vous ouvrez le fichier myPref.xml en tant que fichier de note, ce serait comme suit

Si vous cliquez sur le bouton de déconnexion, cela effacera les valeurs de préférence. et si vous avez entré des valeurs différentes comme entrées, il entrera ces valeurs de préférence dans XML.