Intent: Intents Explícitos e Implícitos como mecanismo de envío de parámetros entre activities

En este artículo, explicaré sobre el Intent, y sus dos tipos el Explícito e Implícito.

Los intents son mensajes que provocan notificaciones y cambios de estatus que al ser recibidos por actividades o servicios pueden levantar procesos. 

Es un mecanismo de paso de mensajes entre una actividad a otra que puede trabajar entre las propias actividades o entre diferentes aplicaciones. Los inten pueden ser utilizados como:

  • Declarar la intención de una actividad o servicio que va ser iniciada al realizar una acción.
  • Difundir un evento ocurrido.
  • Iniciar un servicio en particular o una actividad.

Uno de los usos más frecuentes de los intents es iniciar nuevas actividades. Existen dos formas de intents que se utilizan.

Explícitas: Cuando se especifica la clase a cargar.

Implícitas: Por una solicitud sobre una acción que va ser realizada sobre unos datos específicos.


Los intents también son utilizados como emisores o cuminicadores (broadcast) de eventos a través del sistema. Cualquier aplicación puede registrar este tipo de emisores o Eventos y reaccionar por medio de los intents.

Así por ejemplo, los intents pueden anunciar eventos del sistema, como el cambio de estado en la conexión de Internet o el nivel de batería. Aplicaciones nativas de Android como el marcador del teléfono (Phone o Dialer) o el SMS Messenger resgistran componentes para escuchar eventos específicos como una llamada entrante o un mensaje SMS recibido.

Ejemplo de un intent explícito

Una intent explícita es una intent que se usa para iniciar un componente específico de la aplicación, como una actividad o un servicio particular en la aplicación. Para crear una intent explícita, define el nombre de componente del objeto Intent (todas las otras propiedades de la intent son opcionales). Por ejemplo, si creaste un servicio en tu app denominado DownloadService, diseñado para descargar un archivo de la Web, puedes iniciarlo con el siguiente código:

Kotlin

// Executed in an Activity, so 'this' is the Context
// The fileUrl is a string URL, such as "http://www.example.com/image.png"
val downloadIntent = Intent(this, DownloadService::class.java).apply {
    data
= Uri.parse(fileUrl)
}
startService
(downloadIntent)

Java

// Executed in an Activity, so 'this' is the Context
// The fileUrl is a string URL, such as "http://www.example.com/image.png"
Intent downloadIntent = new Intent(this, DownloadService.class);
downloadIntent
.setData(Uri.parse(fileUrl));
startService
(downloadIntent);

Ejemplo de un intent implícito

Por ejemplo, si tienes contenido que quieres que el usuario comparta con otras personas, crea una intent con la acción ACTION_SEND y agrega extras que especifiquen el contenido para compartir. Cuando llamas a startActivity() con esa intent, el usuario puede elegir una aplicación mediante la cual compartir el contenido.

Kotlin

val sendIntent = Intent(Intent.ACTION_SEND)

// Always use string resources for UI text.
// This says something like "Share this photo with"
val title: String = resources.getString(R.string.chooser_title)
// Create intent to show the chooser dialog
val chooser: Intent = Intent.createChooser(sendIntent, title)

// Verify the original intent will resolve to at least one activity
if (sendIntent.resolveActivity(packageManager) != null) {
    startActivity
(chooser)
}

Java

Intent sendIntent = new Intent(Intent.ACTION_SEND);

// Always use string resources for UI text.
// This says something like "Share this photo with"
String title = getResources().getString(R.string.chooser_title);
// Create intent to show the chooser dialog
Intent chooser = Intent.createChooser(sendIntent, title);

// Verify the original intent will resolve to at least one activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity
(chooser);
}

Ejemplos de la creación de la aplicación de un Intent:

Vamos a crear un nuevo proyecto con el nombre MiPrimerIntent, se deseas puedes colocarle el nombre que desees. Al momento de seleccionar la actividad elegir la opción Empty Activity y crear.


Agregar una nueva actividad para navegar de la actividad01 a la actividad02.


Ahora agregaremos un botón con el texto "Continuar" en el xml de la primera actividad, y un botón con el texto "Volver" en el xml de la segunda actividad.

Actividad 01


Actividad 02


A continuación empezaremos a programar el botón Continuar. Que nos permitirá navegar a la otra actividad.


De igual modo programaremos el botón Volver.


Enviando parámetros de una actividad a otra

Para ello empezaremos agregando un EditText en la actividad inicial, y un TextView en la actividad siguiente.

Actividad 01


Actividad 02


Ahora agreguemos el parámetro obtenido del edtTexto y enviemoslo por el Intent para mostrarlo en el txtTexto de la actividad siguiente. Para ello programaremos ambas actividades y debería quedar del siguiente modo.

Actividad 01


Actividad 02


Ahora veamos el resultado.



Puedes descargar el proyecto de este enlace.

Espero que este artículo te haya sido de gran ayuda, no olvides dejar tu comentario.

Comentarios

Entradas populares de este blog

Practica de Diagrama de Flujo Intermedio - Resueltos

Personaliza tus reportes PDF desde PHP con la librería FPDF

Ejercicios Básicos para aprender a programar en Android Studio [Java y Kotlin]