¿Qué es una intención en Android?

347
  • ¿Qué es una intención en Android?
  • ¿Alguien puede elaborar con un ejemplo?
  • ¿Cuáles son los tipos de intenciones y por qué las estamos usando?
  • ¿Por qué son tan importantes las intenciones en Android?
Nikunj Patel
fuente
Al igual que Windows, que es un sistema operativo basado en mensajes y notifica la entrada del usuario al programa con enviarles un mensaje, ¡Android usa la intención de hacerlo!
AminM

Respuestas:

486

Una intención es una "intención" de realizar una acción; en otras palabras,

un objeto de mensajería que puede usar para solicitar una acción de otro componente de la aplicación

Una intención es básicamente un mensaje para decir que hiciste o quieres que algo suceda. Dependiendo de la intención, las aplicaciones o el sistema operativo pueden estar escuchándolo y reaccionarán en consecuencia. Piense en ello como un correo electrónico explosivo para un grupo de amigos, en el que le dice a su amigo John que haga algo, o para amigos que pueden hacer X ( "filtros de intención" ), hacer X. Las otras personas ignorarán el correo electrónico, pero John (o amigos que pueden hacer X) reaccionarán a eso.

Para escuchar una intención de transmisión (como que suena el teléfono o se recibe un SMS), implemente un receptor de transmisión , al que se le transmitirá la intención. Para declarar que puede manejar la intención de la aplicación de otra persona como "tomar foto", declara un filtro de intención en el archivo de manifiesto de su aplicación .

Si quieres disparar una intención de hacer algo, como abrir el marcador, disparas una intención diciendo que lo harás.

Chirag
fuente
1
@Chirag Raval ¿Cuál es la diferencia entre un oyente con intención y acción?
mayooran
1
¿Puede explicar nuevamente la última oración? Si quieres disparar ..
Shafizadeh
1
¿Similar a los delegados de C #?
Paul
En realidad, una acción significa que puede iniciar un componente desde otro componente utilizando un Intent. Para eso se usa principalmente.
Sreekanth Karumanaghat
También para agregar a esto ... La intención es asíncrona.
Sreekanth Karumanaghat
165

¿Qué es un intento?

Una intención es básicamente un mensaje que se transmite entre componentes (como actividades , servicios, receptores de difusión y proveedores de contenido ). Por lo tanto, es casi equivalente a los parámetros pasados ​​a las llamadas API. Las diferencias fundamentales entre las llamadas API y la invocación de componentes a través de intentos son:

  • Las llamadas a la API son síncronas, mientras que las invocaciones basadas en la intención son asíncronas.
  • Las llamadas API son vinculantes en tiempo de compilación, mientras que las llamadas basadas en intención son vinculantes en tiempo de ejecución.

Por supuesto, se puede hacer que los intentos funcionen exactamente como las llamadas a la API mediante el uso de los llamados intentos explícitos, que se explicarán más adelante. Pero la mayoría de las veces, intenciones implícitas son el camino a seguir y eso es lo que se explica aquí.

Un componente que quiere invocar a otro solo tiene que expresar su intención de hacer un trabajo. Y la plataforma de Android invoca cualquier otro componente que exista y haya afirmado que puede hacer ese trabajo a través de filtros de intención para realizar el trabajo. Esto significa que ninguno de los componentes es consciente de la existencia del otro, pero aún pueden trabajar juntos para dar el resultado deseado para el usuario final.

Esta conexión invisible entre componentes se logra mediante la combinación de intenciones, filtros de intención y la plataforma Android.

Esto lleva a enormes posibilidades como:

  • Mezcle y combine o, más bien, plug and play de componentes en tiempo de ejecución.
  • Reemplazar las aplicaciones de Android incorporadas con aplicaciones desarrolladas a medida.
  • Reutilización a nivel de componente dentro y entre aplicaciones
  • Orientación de servicio al nivel más granular, si puedo decir.

Aquí hay detalles técnicos adicionales sobre Intentos de la documentación de Android .

Una intención es una descripción abstracta de una operación a realizar. Se puede usar con startActivity para iniciar una actividad, broadcastIntent para enviarla a cualquier componente de BroadcastReceiver interesado , y startService (Intent) o bindService (Intent, ServiceConnection, int) para comunicarse con un servicio en segundo plano.

Una intención proporciona una función para realizar enlaces de tiempo de ejecución tardíos entre el código en diferentes aplicaciones. Su uso más significativo es en el lanzamiento de actividades, donde puede considerarse como el pegamento entre actividades. Básicamente es una estructura de datos pasiva que contiene una descripción abstracta de una acción a realizar. Las principales piezas de información en un intento son:

  • action La acción general a realizar, como ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, etc.
  • data Los datos para operar, como un registro de persona en la base de datos de contactos, expresado como Uri.

Aprende más

mr.boyfox
fuente
44
Aprecio el uso de los conceptos informáticos en esta explicación. Esto hace que la discusión sea más concreta y especialmente útil para los lectores con un sólido título en informática.
Donal Lafferty
49

Las intenciones son una forma de decirle a Android lo que quieres hacer . En otras palabras, usted describe su intención. Las intenciones se pueden utilizar para indicar al sistema Android que se ha producido un determinado evento. Otros componentes en Android pueden registrarse en este evento a través de un filtro de intención.

Los siguientes son 2 tipos de intentos

1.intentos explícitos

solía llamar a un componente específico. Cuando sabe qué componente desea iniciar y no desea darle al usuario control libre sobre qué componente usar. Por ejemplo, tiene una aplicación que tiene 2 actividades. Actividad A y actividad B. Desea iniciar la actividad B desde la actividad A. En este caso, defina una intención explícita dirigida a la actividad B y luego la use para llamarla directamente.

2 Intenciones implícitas

se usa cuando tienes una idea de lo que quieres hacer, pero no sabes qué componente se debe iniciar. O si desea darle al usuario una opción para elegir entre una lista de componentes para usar. Si estos intentos se envían al sistema Android, busca todos los componentes que están registrados para la acción específica y el tipo de datos. Si solo se encuentra un componente, Android inicia el componente directamente. Por ejemplo, tiene una aplicación que usa la cámara para tomar fotos. Una de las características de su aplicación es que le da al usuario la posibilidad de enviar las fotos que ha tomado. No sabe qué tipo de aplicación tiene el usuario que puede enviar fotos, y también desea darle al usuario una opción para elegir qué aplicación externa usar si tiene más de una. En este caso no usarías una intención explícita.

Siempre se entrega una intención explícita a su objetivo, sin importar lo que contenga; No se consulta el filtro. Pero una intención implícita se entrega a un componente solo si puede pasar a través de uno de los filtros del componente

Filtros de intención

Si se envía una intención al sistema Android, determinará las aplicaciones adecuadas para esta intención. Si se han registrado varios componentes para este tipo de Intentos, Android ofrece al usuario la opción de abrir uno de ellos.

Esta determinación se basa en IntentFilters. Un IntentFilters especifica los tipos de Intento a los que puede responder una actividad, servicio o Receptor Broadcast. Un filtro de intención declara las capacidades de un componente. Especifica qué actividad o servicio puede hacer y qué tipos de transmisiones puede manejar un receptor. Permite que el componente correspondiente reciba Intentos del tipo declarado. Los IntentFilters generalmente se definen a través del archivo AndroidManifest.xml. Para BroadcastReceiver también es posible definirlos en la codificación. Un IntentFilters se define por su categoría, acción y filtros de datos. También puede contener metadatos adicionales.

Si un componente no define un filtro de intención, solo se puede invocar por intenciones explícitas.

Las siguientes son 2 formas de definir un filtro

1 archivo de manifiesto

Si define el filtro de intención en el manifiesto, su aplicación no tiene que estar ejecutándose para reaccionar a las intenciones definidas en su filtro. Android registra el filtro cuando se instala su aplicación.

2.BroadCast Receptor

Si desea que su receptor de transmisión reciba la intención solo cuando su aplicación se esté ejecutando. Luego debe definir su filtro de intención durante el tiempo de ejecución (programáticamente). Tenga en cuenta que esto funciona solo para receptores de transmisión.

Varun Bhatia
fuente
12

Después de escribir una sola actividad, surge la necesidad de pasar a otra actividad para realizar otra tarea con o sin información de la primera actividad.

La plataforma Android permite la transición mediante la interfaz de intención.

Las palabras se toman de aquí: Usando Intent Demo y le sugiero que siga este ejemplo porque también han proporcionado un archivo de código. para que pueda usarlo y entender fácilmente lo mismo.

Paresh Mayani
fuente
Las intenciones son más que la transición entre actividades. Sería más útil dar una visión general.
Vaddadi Kartick
@KartickVaddadi De acuerdo con su punto. ¡Esta fue mi respuesta para el uso único de Intent!
Paresh Mayani
Paresh, el enlace blog.vimviv.com/android/intent-android ya no funciona :(
user2060383
9

Intento de Android

La intención de Android te permite navegar de una actividad de Android a otra. Con ejemplos, este tutorial también habla sobre varios tipos de intentos de Android.

La intención de Android se puede definir como un simple objeto de mensaje que se utiliza para comunicarse de una actividad a otra.

Los intentos definen la intención de una aplicación. También se utilizan para transferir datos entre actividades.

Se puede usar una intención de Android para realizar las siguientes 3 tareas:

  1. Abra otra actividad o servicio desde la actividad actual
  2. Pase datos entre actividades y servicios
  3. Delegue la responsabilidad a otra aplicación. Por ejemplo, puede usar Intentos para abrir la aplicación del navegador para mostrar una URL.

La intención puede clasificarse ampliamente en 2 categorías. No hay palabras clave para esta categoría y solo una clasificación amplia de cómo se usan las intenciones de Android.

Intención explícita de Android

La intención explícita de Android es la intención en la que define explícitamente el componente que debe ser llamado por el sistema Android.

 Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);

Intención implícita de Android

La intención implícita de Android es la intención en la que, en lugar de definir los componentes exactos, define la acción que desea realizar. La decisión de manejar esta acción se deja al sistema operativo. El sistema operativo decide qué componente es mejor ejecutar para intentos implícitos. Veamos un ejemplo:

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);

Para más información puede visitar a continuación

http://developer.android.com/reference/android/content/Intent.html

IntelliJ Amiya
fuente
9

Según su documentación:

Un intento es un objeto que proporciona enlace de tiempo de ejecución entre componentes separados (como dos actividades). La intención representa la "intención de hacer algo" de una aplicación. Puede usar intentos para una amplia variedad de tareas, pero la mayoría de las veces se usan para comenzar otra actividad.

Aquí está el enlace con el ejemplo: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

Como se describe en el documento, para comenzar una actividad (también debe comprender qué es la actividad) use la intención como se muestra a continuación

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}
kta
fuente
8

Una intención es una descripción abstracta de una operación a realizar. Se puede usar con startActivity para iniciar una Actividad, broadcastIntent para enviarla a cualquier componente BroadcastReceiver interesado, y startService (Intent) o bindService (Intent, ServiceConnection, int) para comunicarse con un Servicio en segundo plano.

Para más detalles ver estos enlaces:

1) http://developer.android.com/reference/android/content/Intent.html

2) http://developer.android.com/guide/topics/intents/intents-filters.html

3) http://www.vogella.de/articles/AndroidIntent/article.html

Hay muchos más artículos disponibles.

Dinesh Sharma
fuente
5

¿Qué es la intención?

Es un tipo de mensaje o información que se pasa a los componentes. Se utiliza para iniciar una actividad, mostrar una página web, enviar sms, enviar correos electrónicos, etc.

Hay dos tipos de intenciones en Android:

Intención implícita Intención
explícita

La intención implícita se utiliza para invocar los componentes del sistema.

Ejemplo

Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));

startActivity(i);

La intención explícita se usa para invocar la clase de actividad.

Ejemplo

Intención intent = newIntent (this, SecondActivity.class);

startActivity(intent);

puedes leer mas

http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html

Mina Fawzy
fuente
2

Un intento es una clase, es decir, enlazar la información para realizar algunas acciones.

ejemplo: pasar datos de una actividad a otra actividad cuando el usuario realiza tales acciones en

actividad presente.

madarkife
fuente
1

En una visión amplia, podemos definir Intent como

Cuando una Actividad desea iniciar otra actividad, crea un Objeto llamado Intención que especifica qué Actividad desea iniciar.

Kartik Goyal
fuente
0

Una aplicación de Android puede contener cero o más actividades. Cuando su aplicación tiene más de una actividad, a menudo necesita navegar de una a otra. En Android, navegas entre actividades a través de lo que se conoce como una intención. Puede pasar algunos datos a la actividad que desea comenzar a través de la intención, utilizando putExtra ().

Shaon Hasan
fuente
0

Desde el enlace de papelDeep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013

La intención se entiende en algunas líneas pequeñas pero efectivas.

  1. Android admite una forma simple de IPC (comunicación entre procesos) a través de intentos
  2. La mensajería intencional es un marco para la comunicación asincrónica entre los componentes de Android (actividad, servicio, proveedores de contenido, receptor de difusión)
  3. Esos componentes pueden ejecutarse en la misma aplicación o en diferentes aplicaciones (es decir, procesos)
  4. Permite tanto los dominios de mensajería de punto a punto como los de publicación y suscripción
  5. La intención en sí misma representa un mensaje que contiene la descripción de la operación a realizar, así como los datos que se transmitirán a los destinatarios.

De este hilo, una respuesta simple de la arquitecta de Android, Dianne Hackborn, lo declara como data containerlo que realmente es.

Desde el punto de vista de la arquitectura de Android :

La intención es un contenedor de datos que se utiliza para la comunicación entre procesos. Está construido sobre el Binderpunto de vista de la arquitectura de Android.

Zahan Safallwa
fuente
0

Las intenciones se utilizan para iniciar otra actividad desde una actividad. Básicamente se utiliza para varios fines, como enviar datos a otra actividad desde una actividad y para desencadenar.

Básicamente son de dos tipos.

  1. Intenciones implícitas.

  2. Intentos explícitos.

Como principiante lo sé mucho, creo que esto dará una idea básica sobre los intentos de Android

Soorya Prakash
fuente
2
Por favor, lea este enlace sobre cómo responder preguntas.
Bonatti