Gestión de sesiones en Android con ejemplo

Gestión de sesioneses una de las funciones más importantes que se utilizarán en la aplicación de Android cuando integre la función de inicio de sesión en Android. En su aplicación de Android, si está utilizando una función de inicio de sesión, debe guardar el estado si el usuario ha iniciado sesión por primera vez. Luego, cuando el usuario cierra su aplicación y la vuelve a abrir, debe redirigir a nuestra pantalla de inicio, en lugar de abrir una pantalla de inicio de sesión. Entonces, en este artículo, implementaremos la funcionalidad de administración de sesiones en nuestra aplicación de Android. Para implementar esta funcionalidad, estamos creando un formulario de inicio de sesión simple y una pantalla de inicio. En nuestro formulario de inicio de sesión, el usuario debe ingresar sus credenciales e iniciar sesión en la aplicación. Después de iniciar sesión, las credenciales del usuario se guardarán dentro de la aplicación y cada vez que vuelva a abrir la aplicación, el usuario será redirigido a la pantalla de inicio. Para la gestión de sesiones dentro de nuestra aplicación,Preferencias compartidas para almacenar las credenciales de los usuarios. Ahora pasaremos a la parte de implementación.

Ejemplo:

Crearemos una aplicación de inicio de sesión simple como se mencionó anteriormente para almacenar la sesión del usuario. A continuación, se proporciona un GIF de muestra en el que veremos lo que construiremos en nuestra aplicación. Tenga en cuenta que implementaremos este proyecto utilizando el lenguaje Java

Session Management in Android sample GIF

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación. 

Paso 2: Agregue las siguientes strings en su archivo strings.xml

Vaya a la aplicación > res > valores > strings.xml y agréguele las siguientes strings. 

XML

<resources>
    <!--app name-->
    <string name="app_name">Session Management</string>
    <!--string for login button-->
    <string name="login">Login</string>
    <!--string for edittext hint in password-->
    <string name="enter_password">Enter password</string>
    <!--string for edittext hint in email-->
    <string name="enter_youe_email">Enter your Email</string>
    <!--string for logout button-->
    <string name="logout">Logout</string>
</resources>

Paso 3: trabajar con el archivo activity_main.xml

Vaya al archivo activity_main.xml y consulte el siguiente código. A continuación se muestra el código para el archivo activity_main.xml .

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"
    tools:context=".MainActivity">
 
    <!--EditText for getting user email address-->
    <!--input type is set to email-->
    <EditText
        android:id="@+id/idEdtEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_marginTop="50dp"
        android:layout_marginEnd="10dp"
        android:hint="@string/enter_youe_email"
        android:importantForAutofill="no"
        android:inputType="textEmailAddress" />
 
 
    <!--EditText for getting user password-->
    <!--input type is set to password-->
    <EditText
        android:id="@+id/idEdtPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtEmail"
        android:layout_marginStart="10dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="10dp"
        android:hint="@string/enter_password"
        android:importantForAutofill="no"
        android:inputType="textPassword" />
 
    <!--button to continue to login-->
    <Button
        android:id="@+id/idBtnLogin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtPassword"
        android:layout_marginStart="10dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="10dp"
        android:text="@string/login" />
 
</RelativeLayout>

Paso 4: crea una nueva actividad para la pantalla de inicio 

Vaya a la aplicación > java > el nombre del paquete de su aplicación > haga clic con el botón derecho en el nombre de su paquete y haga clic en Nuevo > Actividad > Actividad vacía y asegúrese de mantener su idioma como Java. Nombra la actividad como HomeActivity. 

Paso 5: trabajar con el archivo MainActivity.java

Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
 
public class MainActivity extends AppCompatActivity {
 
    // creating constant keys for shared preferences.
    public static final String SHARED_PREFS = "shared_prefs";
     
    // key for storing email.
    public static final String EMAIL_KEY = "email_key";
     
    // key for storing password.
    public static final String PASSWORD_KEY = "password_key";
     
    // variable for shared preferences.
    SharedPreferences sharedpreferences;
    String email, password;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        // Initializing EditTexts and our Button
        EditText emailEdt = findViewById(R.id.idEdtEmail);
        EditText passwordEdt = findViewById(R.id.idEdtPassword);
        Button loginBtn = findViewById(R.id.idBtnLogin);
 
        // getting the data which is stored in shared preferences.
        sharedpreferences = getSharedPreferences(SHARED_PREFS, Context.MODE_PRIVATE);
         
        // in shared prefs inside het string method
        // we are passing key value as EMAIL_KEY and
        // default value is
        // set to null if not present.
        email = sharedpreferences.getString("EMAIL_KEY", null);
        password = sharedpreferences.getString("PASSWORD_KEY", null);
 
        // calling on click listener for login button.
        loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // to check if the user fields are empty or not.
                if (TextUtils.isEmpty(emailEdt.getText().toString()) && TextUtils.isEmpty(passwordEdt.getText().toString())) {
                    // this method will call when email and password fields are empty.
                    Toast.makeText(MainActivity.this, "Please Enter Email and Password", Toast.LENGTH_SHORT).show();
                } else {
                    SharedPreferences.Editor editor = sharedpreferences.edit();
                     
                    // below two lines will put values for
                    // email and password in shared preferences.
                    editor.putString(EMAIL_KEY, emailEdt.getText().toString());
                    editor.putString(PASSWORD_KEY, passwordEdt.getText().toString());
                     
                    // to save our data with key and value.
                    editor.apply();
                     
                    // starting new activity.
                    Intent i = new Intent(MainActivity.this, HomeActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        });
    }
 
    @Override
    protected void onStart() {
        super.onStart();
        if (email != null && password != null) {
            Intent i = new Intent(MainActivity.this, HomeActivity.class);
            startActivity(i);
        }
    }
}

Paso 6: Ahora trabajaremos en nuestra Pantalla de Inicio

Dentro de nuestra pantalla de inicio, mostraremos la dirección de correo electrónico de los usuarios y un botón de cierre de sesión para que los usuarios puedan cerrar sesión en la aplicación. Para la pantalla de inicio, hemos creado una actividad llamada HomeActivity. Vaya a la aplicación > res > diseño > actividad_inicio.xml y ábralo y agréguele el siguiente código. 

Java

<?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"
    tools:context=".HomeActivity">
 
    <!--Textview for displaying
        user's email address-->
    <TextView
        android:id="@+id/idTVWelcome"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:padding="5dp"
        android:textAlignment="center"
        android:textSize="20sp" />
 
    <!--button for logging out of the app-->
    <Button
        android:id="@+id/idBtnLogout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idTVWelcome"
        android:layout_marginStart="20dp"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="20dp"
        android:text="@string/logout" />
 
</RelativeLayout>

Ahora nos moveremos hacia el archivo java de nuestra HomeActivity. Vaya a la aplicación > java > el nombre del paquete de su aplicación y abra el archivo HomeActivity.java. Agregue el siguiente código dentro de ese archivo. 

Java

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
 
public class HomeActivity extends AppCompatActivity {
 
    // creating constant keys for shared preferences.
    public static final String SHARED_PREFS = "shared_prefs";
     
    // key for storing email.
    public static final String EMAIL_KEY = "email_key";
     
    // key for storing password.
    public static final String PASSWORD_KEY = "password_key";
     
    // variable for shared preferences.
    SharedPreferences sharedpreferences;
    String email;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
         
        // initializing our shared preferences.
        sharedpreferences = getSharedPreferences(SHARED_PREFS, Context.MODE_PRIVATE);
         
        // getting data from shared prefs and
        // storing it in our string variable.
        email = sharedpreferences.getString("EMAIL_KEY", null);
         
        // initializing our textview and button.
        TextView welcomeTV = findViewById(R.id.idTVWelcome);
        welcomeTV.setText("Welcome \n" + email);
        Button logoutBtn = findViewById(R.id.idBtnLogout);
        logoutBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 
                // calling method to edit values in shared prefs.
                SharedPreferences.Editor editor = sharedpreferences.edit();
                 
                // below line will clear
                // the data in shared prefs.
                editor.clear();
                 
                // below line will apply empty
                // data to shared prefs.
                editor.apply();
                 
                // starting mainactivity after
                // clearing values in shared preferences.
                Intent i = new Intent(HomeActivity.this, MainActivity.class);
                startActivity(i);
                finish();
            }
        });
    }
}

Producción:

Consulte el enlace de GitHub: https://github.com/ChaitanyaMunje/SessionManagementAndroid

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *