jueves, 19 de julio de 2012

Intenciones en Android


Representan la “intención” o solicitud de que alguno de los componentes lleve a cabo una tarea.
Las intenciones ofrecen un servicio de paso de mensajes que permite interconectar componentes de la misma o de distintas aplicaciones.
Las intenciones se utilizan para:
  • Arrancar actividades
  • Enviar eventos a múltiples destinatarios
Una intención queda descrita por:
  • Acción que se quiere lanzar (MAIN – EDIT- PICK, …)
  • Dato sobre el que actúa la acción (URI) ?Extras (int, String, Serializable,…)
  • Component (org.osl.curso.HelloActivity)

1
2
Intent intent = new Intent(Intent.ACTION_EDIT)
Intent.setData(Uri.parse(“content://contacts/people/1”);
1
2
Intent intent = new Intent(Intent.ACTION_EDIT)
Intent.setData(Uri.parse(“http://www.google.es”);
Hay dos formas de invocar a una intención: explícita, implícita
  1. Invocación explícita Se expecifica explícitamente en código que componente es el encargado de manejar la intención.
  2. Invocación implícita Es la plataforma la que determina, a través de un proceso de resolución de intenciones, que componente es el más apropiado para manerjar la intención. Un componente declara su capacidad para atender a una intención mediante el tag <intent-filter> en el archivo AndroidManifest.xml

Los filtros de intenciones registran cuales son los componentes capaces de llevar una acción sobre un conjunto de datos. Los componentes se registran usando el tab <intent-filter> del manifiesto especificando una acción, una categoría y unos datos.
1
2
3
4
5
6
<activity android:name=".Hello“ android:label="@string/app_name">
 <intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER"/>
 </intent-filter>
</activity>
El emisor de la intención puede pertenecer a cualquier aplicación.
Las intenciones se pueden usar para moverse entre actividades.
La intención puede ser explícita indicando la actividad destino o implícita especificando una acción y unos datos y dejando que se encuentre la actividad adecuada en tiempo de ejecución.
Lanzar una actividad de manera explícita
1
2
Intent intent = new Intent(Context, Activity.class);
startActivity(intent);
Lanzar una actividad de manera implícita
1
2
Intent intent = new Intent(Intent.ACTION_DIAL, URI.parse(tel:928-76-34-26));
startActivity(intent);
Una actividad también se puede lanzar para que devuelva un resultado mediante el métodostartActivityForResult.
Cuando termina esta subactividad se llama al método onActivityResult de la actividad padre desde la que fue arrancada.
Las intenciones implícitas pueden utilizarse para que futuros componentes proporcionen acciones que pueda añadirse al menú, sin necesidad de recompilar en el futuro.
Muchas aplicaciones nativas emplean este mecanismo para extender su funcionalidad a medida que nuevas actividades van implementando nuevas acciones previstas.
Permiten extender las aplicaciones de la misma manera que lo hacen los plugins
Las intenciones se pueden enviar a muchos receptores mediante el método sendBroadcast
Las intenciones las reciben los broadcast receivers.
Las intenciones de broadcast se utilizan para notificar sobre eventos del sistema o de otras aplicaciones
Por ejemplo Android utiliza las intenciones de broadcast para enviar eventos del sistema como cambios en la carga de la batería, conexiones de red, llamadas entrantes, sms entrantes,…

No hay comentarios:

Publicar un comentario