Android: gestión de sesiones

La sesión lo ayuda cuando desea almacenar datos del usuario fuera de su aplicación, de modo que la próxima vez que el usuario use su aplicación, pueda recuperar fácilmente sus datos y actuar en consecuencia.

Esto puede hacerse de muchas maneras. Pero la forma más fácil y agradable de hacerlo es a través deShared Preferences.

Preferencias compartidas

Las preferencias compartidas le permiten guardar y recuperar datos en forma de pares de clave y valor. Para utilizar las preferencias compartidas, debe llamar a un método getSharedPreferences () que devuelve una instancia SharedPreference apuntando al archivo que contiene los valores de las preferencias.

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

Puede guardar algo en las preferencias compartidas utilizando la clase SharedPreferences.Editor. Llamará al método de edición de la instancia SharedPreference y lo recibirá en un objeto editor. Su sintaxis es -

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

Además del método putString, hay métodos disponibles en la clase del editor que permiten la manipulación de datos dentro de las preferencias compartidas. Se enumeran de la siguiente manera:

No Señor Modo y descripción
1

apply()

Es un método abstracto. Confirmará sus cambios desde el editor al objeto sharedPreference al que está llamando

2

clear()

Eliminará todos los valores del editor.

3

remove(String key)

Eliminará el valor cuya clave se haya pasado como parámetro

4

putLong(String key, long value)

Guardará un valor largo en un editor de preferencias.

5

putInt(String key, int value)

Guardará un valor entero en un editor de preferencias

6

putFloat(String key, float value)

Guardará un valor flotante en un editor de preferencias

Gestión de sesiones a través de preferencias compartidas

Para realizar la gestión de sesiones desde preferencias compartidas, necesitamos verificar los valores o datos almacenados en preferencias compartidas en el onResumemétodo. Si no tenemos los datos, iniciaremos la aplicación desde el principio ya que está recién instalada. Pero si obtuvimos los datos, comenzaremos desde donde los dejó el usuario. Se demuestra en el siguiente ejemplo:

Ejemplo

El siguiente ejemplo demuestra el uso de la gestión de sesiones. Contiene una aplicación básica que le permite iniciar sesión por primera vez. Y luego, cuando salga de la aplicación sin cerrar la sesión, volverá al mismo lugar si vuelve a iniciar la aplicación. Pero si cierra la sesión de la aplicación, volverá a la pantalla principal de inicio de sesión.

Para experimentar con este ejemplo, debe ejecutarlo en un dispositivo real o en un emulador.

Pasos Descripción
1 Utilizará Android Studio IDE para crear una aplicación de Android en un paquete com.example.sairamkrishna.myapplication.
2 Modifique el archivo src / MainActivity.java para agregar código de progreso para agregar código de sesión.
3 Cree una nueva actividad y el nombre como second.java. Edite este archivo para agregar código de progreso para agregar código de sesión.
4 Modifique el archivo res / layout / activity_main.xml para agregar el código XML respectivo.
5 Modifique el archivo res / layout / second_main.xml para agregar el código XML respectivo.
7 Ejecute la aplicación y elija un dispositivo Android en ejecución e instale la aplicación en él y verifique los resultados.

Aquí está el contenido 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);
         }
      });
   }
}

Aquí está el contenido 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();
   }
}

Aquí está el contenido 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>

Aquí está el contenido 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>

Aquí está el contenido de Strings.xml.

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

Aquí está el contenido 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>

Intentemos ejecutar su aplicación. Supongo que ha creado su AVD mientras realizaba la configuración del entorno. Para ejecutar la aplicación desde Android Studio, abra uno de los archivos de actividad de su proyecto y haga clic en el

icono Ejecutar de la barra de herramientas. Android Studio instala la aplicación en su AVD y la inicia y, si todo está bien con su configuración y aplicación, se mostrará la siguiente ventana del Emulador:

Escriba su nombre de usuario y contraseña (type anything you like, but remember what you type)y haga clic en el botón de inicio de sesión. Se muestra en la imagen a continuación:

Tan pronto como haga clic en el botón de inicio de sesión, será llevado a esta pantalla de bienvenida. Ahora su información de inicio de sesión se almacena en preferencias compartidas.

Ahora haga clic en Exit without logout y volverá a la pantalla de inicio y, en preferencia, la salida del archivo sería como se muestra a continuación.

Si abre el archivo myPref.xml como archivo de nota, sería el siguiente

Si hace clic en el botón Cerrar sesión, se borrarán los valores de preferencia. y si ingresó diferentes valores como entradas, ingresará esos valores como preferencia en XML.