La intención es un objeto de mensajería que indica qué tipo de acción se debe realizar. El uso más significativo de la intención es el lanzamiento de la actividad. La intención facilita la comunicación entre los componentes.
Nota: los componentes de la aplicación son los componentes básicos de la aplicación.
Caso de uso fundamental de Intents
Actividad inicial
Una actividad representa la pantalla única en una aplicación. Sin pasar por la instancia de intención, podemos iniciar una actividad.
Ejemplo:
Kotlin
var intent = Intent(this, SecondActivity:: class.java) startIntent(intent)
Puede agregar información adicional usando putExtra().
Inicio de un servicio
Un Servicio es un componente que realiza operaciones en segundo plano sin una interfaz de usuario, lo que también se denomina proceso en segundo plano.
Entrega de una transmisión
Una transmisión es un mensaje que cualquier aplicación puede recibir. En Android, el sistema ofrece varios eventos del sistema de transmisión, como que el dispositivo comience a cargarse, desactive o active el modo avión, etc.
Tipo de intención
Hay dos tipos de intenciones
- Intención explícita: la intención explícita puede realizar la acción específica de la aplicación que establece el código, como cambiar la actividad. En la intención explícita, el usuario sabe todas las cosas, como después de hacer clic en un botón, qué actividad comenzará y las intenciones explícitas se utilizan para la comunicación dentro de la aplicación.
- Intención implícita: las intenciones implícitas no nombran un componente específico como la intención explícita, sino que declaran una acción general a realizar, lo que permite que se maneje un componente de otra aplicación.
Por ejemplo: cuando toca el botón Compartir en cualquier aplicación, puede ver Gmail, Bluetooth y otras opciones de aplicaciones para compartir.
Filtro de intención
- La intención implícita utiliza el filtro de intención para atender la solicitud del usuario.
- El filtro de intentos especifica los tipos de intentos a los que puede responder una actividad, un servicio o un receptor de difusión.
- Los filtros de intención se declaran en el archivo de manifiesto de Android.
- El filtro de intención debe contener <acción>
Ejemplo:
XML
<intent-filter android:icon="drawable resource" android:label="string resource" android:priority="integer" > . . . </intent-filter>
La mayoría de los filtros de intención se describen por su
- <acción>,
- <categoría> y
- <datos> .
1. <acción>
Sintaxis:
XML
<action android:name="string" />
Agrega una acción a un filtro de intenciones. Un elemento <intent-filter> debe contener uno o más elementos <action>. Si no hay elementos <action> en un filtro de intención, el filtro no acepta ningún objeto de intención.
Ejemplos de acción común:
- ACTION_VIEW: use esta acción con intención con startActivity() cuando tenga información que la actividad puede mostrar al usuario, como mostrar una imagen en una aplicación de galería o una dirección para ver en una aplicación de mapa
- ACTION_SEND: debe usar esto con la intención de startActivity() cuando tenga algunos datos que el usuario puede compartir a través de otra aplicación, como una aplicación de correo electrónico o una aplicación para compartir en redes sociales.
2. <categoría>
Sintaxis:
XML
<category android:name="string" />
Agrega un nombre de categoría a un filtro de intenciones. Una string que contiene información adicional sobre el tipo de componente que debe controlar la intención.
Ejemplo de categorías comunes:
- CATEGORY_BROWSABLE: la actividad de destino permite que un navegador web la inicie para mostrar los datos a los que hace referencia un enlace.
3. <datos>
Sintaxis:
XML
<data android:scheme="string" android:host="string" android:port="string" android:path="string" android:pathPattern="string" android:pathPrefix="string" android:mimeType="string" />
Agrega una especificación de datos a un filtro de intenciones. La especificación puede ser solo un tipo de datos, solo un URI o un tipo de datos y un URI.
Nota: El identificador uniforme de recursos (URI) es una string de caracteres que se utiliza para identificar un recurso. Un URI identifica un recurso por ubicación, por nombre o por ambos.
Implementación del filtro de intención con una aplicación de demostración
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 Kotlin como lenguaje de programación.
Paso 2: Agregar dependencias al archivo build.gradle(Module:app)
Agregue la siguiente dependencia al archivo build.gradle(Module:app) . Agregamos estas dos dependencias para evitar usar findViewById() en nuestro archivo MainActivity.kt . Pruebe esto, de lo contrario, use la forma normal como findViewById() .
aplicar complemento: ‘kotlin-android’
aplicar complemento: ‘kotlin-android-extensions’
Paso 3: 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 .
XML
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/sendButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="SEND" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.476" app:layout_constraintStart_toStartOf="parent" app:layout_constraintVertical_bias="0.153" /> <Button android:id="@+id/buttonView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="View" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.826" /> </androidx.constraintlayout.widget.ConstraintLayout>
Paso 4: trabajar con el archivo AndroidManifest.xml
El siguiente es el código para el archivo AndroidManifest.xml .
XML
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.menuapplication"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.MenuApplication"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!--SEND INTENT FILTER--> <intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"/> </intent-filter> <!--VIEW INTENT FILTER--> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="http"/> </intent-filter> </activity> </application> </manifest>
Paso 5: 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.example.intentfilter import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // send button on click listener sendButton.setOnClickListener { var intent = Intent(Intent.ACTION_SEND) // intent intent.type = "text/plain" intent.putExtra(Intent.EXTRA_EMAIL, "niranjantest@gmail.com") intent.putExtra(Intent.EXTRA_SUBJECT, "This is a dummy message") intent.putExtra(Intent.EXTRA_TEXT, "Dummy test message") startActivity(intent) } // View on click listener buttonView.setOnClickListener { var intent = Intent(Intent.ACTION_VIEW) startActivity(intent) } } }
Salida con explicación:
Haga clic en el botón Enviar, verá una pantalla como esta,
Ahora elija la aplicación Gmail,
Ahora ve a nuestra aplicación y haz clic en el botón Ver,
nuestra aplicación ficticia. Puede elegir cualquier aplicación de estas opciones porque estamos usando un filtro de intención de vista.
Publicación traducida automáticamente
Artículo escrito por niranjannaik y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA