Gestión de sesiones de Android con Kotlin

La gestión de sesiones se ve en la mayoría de las aplicaciones de Android en las que podemos conocer la página de inicio de sesión y registro. Esto se utiliza para almacenar la sesión del usuario cuando está conectado a la aplicación. Cuando el usuario inicia sesión dentro de la aplicación por primera vez. Las credenciales de usuario, como el correo electrónico y la contraseña, se almacenan en las preferencias compartidas. Cuando el usuario abra la aplicación nuevamente, será redirigido a la pantalla de inicio de la aplicación en lugar de iniciar sesión una y otra vez. Shared Preferences es una clase dentro de Android que podemos usar para almacenar las credenciales del usuario y mantener la sesión del usuario. En este artículo, crearemos una aplicación simple en la que veremos la gestión de sesiones.   

Nota : si desea implementar Calendar View en aplicaciones de Android usando Java. Consulta el siguiente artículo: Gestión de sesiones en Android con Java

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

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

Paso 2: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml . Se agregan comentarios dentro del código para comprender el código con más detalle.

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:orientation="vertical"
    tools:context=".MainActivity">
 
    <!--on below line we are creating a new text view-->
    <TextView
        android:id="@+id/idTVHead"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:layout_marginTop="50dp"
        android:layout_marginEnd="20dp"
        android:gravity="center"
        android:padding="8dp"
        android:text="Session Management in Android Example"
        android:textAlignment="center"
        android:textColor="@color/purple_200"
        android:textSize="20sp"
        android:textStyle="bold" />
 
    <!--on below line we are creating edit text for our email-->
    <EditText
        android:id="@+id/idEdtEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idTVHead"
        android:layout_marginStart="20dp"
        android:layout_marginTop="60dp"
        android:layout_marginEnd="20dp"
        android:hint="Enter your email" />
 
    <!--on below line we are creating edit text for password-->
    <EditText
        android:id="@+id/idEdtPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtEmail"
        android:layout_marginStart="20dp"
        android:layout_marginTop="40dp"
        android:layout_marginEnd="20dp"
        android:hint="Enter your password"
        android:inputType="textPassword" />
 
    <!--on below line we are creating a button for login-->
    <Button
        android:id="@+id/idBtnLogin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtPassword"
        android:layout_marginStart="20dp"
        android:layout_marginTop="60dp"
        android:layout_marginEnd="20dp"
        android:padding="4dp"
        android:text="Login"
        android:textAllCaps="false" />
 
</RelativeLayout>

Paso 3: crea una nueva actividad como MainActivity2

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 MainActivity2.

Paso 4: trabajar con el archivo MainActivity.kt

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

Kotlin

package com.gtappdevelopers.kotlingfgproject
 
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.text.TextUtils
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
 
class MainActivity : AppCompatActivity() {
 
    // on below line we are creating
    // variable for email and password edit text.
    lateinit var emailEdt: EditText
    lateinit var pwdEdt: EditText
 
    // on below line we are creating
    // a variable for our button.
    lateinit var loginBtn: Button
 
    // on below line we are creating
    // a variable for shared preferences.
    lateinit var sharedPreferences: SharedPreferences
 
    // on below line we are creating a variable
    // for prefs key and email key and pwd key.
    var PREFS_KEY = "prefs"
    var EMAIL_KEY = "email"
    var PWD_KEY = "pwd"
 
    // on below line we are creating a
    // variable for email and password.
    var email = ""
    var pwd = ""
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
         
        // on below line we are initializing
        // our email and pwd edit text
        emailEdt = findViewById(R.id.idEdtEmail)
        pwdEdt = findViewById(R.id.idEdtPassword)
 
        // on below line we are initializing
        // our login button with id.
        loginBtn = findViewById(R.id.idBtnLogin)
 
        // on below line we are initializing our shared preferences.
        sharedPreferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)
 
        // on below line we are getting data from
        // our shared prefs and setting it to email.
        email = sharedPreferences.getString(EMAIL_KEY, "").toString()
 
        // on below line we are getting data from
        // shared prefs and setting it to pwd.
        pwd = sharedPreferences.getString(PWD_KEY, "").toString()
 
        // on below line we are adding on click listener for our login button.
        loginBtn.setOnClickListener {
            // on below line we are checking if email and pwd txt is empty or not.
            if (TextUtils.isEmpty(emailEdt.text.toString()) && TextUtils.isEmpty(pwdEdt.text.toString())) {
 
                // if email and pwd edit text is empty we are displaying a toast message
                Toast.makeText(this, "Please Enter Email and Password", Toast.LENGTH_SHORT).show();
 
            } else {
                // on below line we are creating variable for editor
                // of shared prefs and initializing it.
                val editor: SharedPreferences.Editor = sharedPreferences.edit()
 
                // on below line we are adding our email and
                // pwd to shared prefs to save them.
                editor.putString(EMAIL_KEY, emailEdt.text.toString())
                editor.putString(PWD_KEY, pwdEdt.text.toString())
 
                // on below line we are applying
                // changes to our shared prefs.
                editor.apply()
 
                // on below line we are opening our intent as main activity 2
                val i = Intent(this@MainActivity, MainActivity2::class.java)
 
                // on below line we are
                // starting our activity.
                startActivity(i)
 
                // on below line we are calling
                // finish to close our activity.
                finish()
            }
        }
    }
 
    // on below line we are calling on start method.
    override fun onStart() {
        super.onStart()
        // in this method we are checking if email and pwd are not empty.
        if (!email.equals("") && !pwd.equals("")) {
            // if email and pwd is not empty we
            // are opening our main 2 activity on below line.
            val i = Intent(this@MainActivity, MainActivity2::class.java)
 
            // on below line we are calling start
            // activity method to start our activity.
            startActivity(i)
 
            // on below line we are calling
            // finish to finish our main activity.
            finish()
        }
    }
}

Paso 5: Trabajar con el archivo activity_main2.xml

Vaya a aplicación > res > diseño > actividad_principal2.xml y agregue el código a continuación. Se agregan comentarios en el código para conocer en detalle. 

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=".MainActivity2">
 
    <!--on below line we are creating a
         simple text view for heading-->
    <TextView
        android:id="@+id/idTVHead"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:layout_marginTop="50dp"
        android:layout_marginEnd="20dp"
        android:gravity="center"
        android:padding="8dp"
        android:text="Session Management in Android Example"
        android:textAlignment="center"
        android:textColor="@color/purple_200"
        android:textSize="20sp"
        android:textStyle="bold" />
 
    <!--on below line we are creating a
        text view for displaying user name-->
    <TextView
        android:id="@+id/idTVUserName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idTVHead"
        android:layout_centerHorizontal="true"
        android:layout_marginStart="20dp"
        android:layout_marginTop="50dp"
        android:layout_marginEnd="20dp"
        android:gravity="center"
        android:padding="4dp"
        android:text="User Name"
        android:textAlignment="center"
        android:textAllCaps="false"
        android:textColor="@color/purple_200"
        android:textSize="20sp"
        android:textStyle="bold" />
 
    <!--on below line we are creating
         a button for logout-->
    <Button
        android:id="@+id/idBtnLogOut"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idTVUserName"
        android:layout_marginStart="20dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="20dp"
        android:padding="5dp"
        android:text="Logout"
        android:textAllCaps="false" />
 
</RelativeLayout>

Paso 6: trabajar con el archivo MainActivity2.kt

Vaya a aplicación > java > nombre del paquete de su aplicación > archivo MainActivity2.kt y agréguele el siguiente código. Se agregan comentarios en el código para conocer en detalle. 

Kotlin

package com.gtappdevelopers.kotlingfgproject
 
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
 
class MainActivity2 : AppCompatActivity() {
 
    // on below line we are creating a variable
    // for text view, string for email
    // and prefs key and an email string.
    lateinit var userTV: TextView
    lateinit var logoutBtn: Button
    var PREFS_KEY = "prefs"
    var EMAIL_KEY = "email"
    var email = ""
 
    // on below line we are creating a variable for shared preferences.
    lateinit var sharedPreferences: SharedPreferences
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
         
        // on below line we are initializing
        // our user text view and logout button.
        userTV = findViewById(R.id.idTVUserName)
        logoutBtn = findViewById(R.id.idBtnLogOut)
 
        // on below line we are initializing our shared preferences variable.
        sharedPreferences = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)
 
        // on below line we are getting the data from
        // email and setting it in email variable.
        email = sharedPreferences.getString(EMAIL_KEY, null)!!
 
        // on below line we are setting a text to user text view.
        userTV.setText("Welcome \n$email")
 
        // on below line we are adding
        // on click listener for our logout button.
        logoutBtn.setOnClickListener {
 
            // on below line we are creating a variable for
            // editor of shared preferences and initializing it.
            val editor: SharedPreferences.Editor = sharedPreferences.edit()
 
            // on below line we are clearing our editor.
            editor.clear()
 
            // on below line we are applying changes which are cleared.
            editor.apply()
 
            // on below line we are opening our mainactivity by calling intent
            val i = Intent(this@MainActivity2, MainActivity::class.java)
 
            // on below line we are simply starting
            // our activity to start main activity
            startActivity(i)
 
            // on below line we are calling
            // finish to close our main activity 2.
            finish()
        }
    }
}

Ahora ejecute su aplicación para ver el resultado. 

Producción: 

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 *