Android - Gestione delle sessioni

La sessione ti aiuta quando desideri memorizzare i dati dell'utente al di fuori della tua applicazione, in modo che la prossima volta che l'utente utilizzerà la tua applicazione, potrai facilmente recuperare i suoi dettagli ed eseguire di conseguenza.

Questo può essere fatto in molti modi. Ma il modo più semplice e simpatico per farlo è attraversoShared Preferences.

Preferenze condivise

Le preferenze condivise consentono di salvare e recuperare i dati sotto forma di chiave, coppia di valori. Per utilizzare le preferenze condivise, è necessario chiamare un metodo getSharedPreferences () che restituisce un'istanza SharedPreference che punta al file che contiene i valori delle preferenze.

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

Puoi salvare qualcosa nelle sharedpreferences usando la classe SharedPreferences.Editor. Chiamerai il metodo di modifica dell'istanza di SharedPreference e lo riceverai in un oggetto dell'editor. La sua sintassi è:

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

Oltre al metodo putString, sono disponibili metodi nella classe dell'editor che consentono la manipolazione dei dati all'interno delle preferenze condivise. Sono elencati come segue:

Suor n Modalità e descrizione
1

apply()

È un metodo astratto. Eseguirà il commit delle modifiche dall'editor all'oggetto sharedPreference che stai chiamando

2

clear()

Rimuoverà tutti i valori dall'editor

3

remove(String key)

Rimuoverà il valore la cui chiave è stata passata come parametro

4

putLong(String key, long value)

Salverà un valore lungo in un editor delle preferenze

5

putInt(String key, int value)

Salverà un valore intero in un editor delle preferenze

6

putFloat(String key, float value)

Salverà un valore float in un editor di preferenze

Gestione delle sessioni tramite preferenze condivise

Per eseguire la gestione della sessione dalle preferenze condivise, è necessario controllare i valori oi dati memorizzati nelle preferenze condivise nel file onResumemetodo. Se non disponiamo dei dati, avvieremo l'applicazione dall'inizio poiché è stata appena installata. Ma se abbiamo ottenuto i dati, inizieremo da dove li ha lasciati l'utente. È dimostrato nell'esempio seguente:

Esempio

L'esempio seguente mostra l'uso di Gestione sessioni. Crea un'applicazione di base che ti consente di accedere per la prima volta. E poi quando esci dall'applicazione senza disconnetterti, verrai riportato nello stesso posto se avvii nuovamente l'applicazione. Ma se esci dall'applicazione, verrai riportato alla schermata di accesso principale.

Per sperimentare questo esempio, è necessario eseguirlo su un dispositivo reale o in un emulatore.

Passi Descrizione
1 Utilizzerai l'IDE di Android Studio per creare un'applicazione Android con un pacchetto com.example.sairamkrishna.myapplication.
2 Modificare il file src / MainActivity.java per aggiungere il codice di avanzamento per aggiungere il codice di sessione.
3 Crea una nuova attività e chiamalo second.java. Modifica questo file per aggiungere il codice di avanzamento per aggiungere il codice della sessione.
4 Modifica il file res / layout / activity_main.xml per aggiungere il rispettivo codice XML.
5 Modificare il file res / layout / second_main.xml per aggiungere il rispettivo codice XML.
7 Esegui l'applicazione e scegli un dispositivo Android in esecuzione, installa l'applicazione su di esso e verifica i risultati.

Ecco il contenuto di 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);
         }
      });
   }
}

Ecco il contenuto di 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();
   }
}

Ecco il contenuto di 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>

Ecco il contenuto di 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>

Ecco il contenuto di Strings.xml.

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

Ecco il contenuto di 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>

Proviamo a eseguire la tua applicazione. Presumo che tu abbia creato il tuo AVD mentre facevi la configurazione dell'ambiente. Per eseguire l'app da Android Studio, apri uno dei file di attività del tuo progetto e fai clic sull'icona Esegui dalla barra degli strumenti. Android Studio installa l'app sul tuo AVD e la avvia e se tutto va bene con la tua configurazione e applicazione, verrà visualizzata la seguente finestra dell'emulatore:

Digita il tuo nome utente e la tua password (type anything you like, but remember what you type)e fare clic sul pulsante di accesso. È mostrato nell'immagine qui sotto -

Non appena fai clic sul pulsante di accesso, verrai portato a questa schermata di benvenuto. Ora le tue informazioni di accesso sono memorizzate nelle preferenze condivise.

Ora fai clic su Exit without logout e verrai riportato alla schermata principale e nel file di preferenza l'uscita sarà come mostrato nell'immagine sottostante

Se apri il file myPref.xml come file di note, sarà il seguente

Se fai clic sul pulsante di disconnessione, verranno cancellati i valori delle preferenze. e se hai inserito valori diversi come input, inserirà tali valori come preferenza in XML.