Intents

Intents
- Elemento de comunicación.
- Representa la intención o solicitud de una tarea.
- Nos permite iniciar Servicios, actividades o enviar mensajes de difusión.
- Existen 2 tipos
- Explícitos
- Implícitos
Uso del intent
- El intent representa una intención:
- De lanzar actividades:
- startActivity(intent);
- De lanzar servicios:
- startService(intent);
- De lanzar actividades:
- O puede representar un envío de información:
- sendBroadcast(intent);
- Recibido por Broadcast Receivers.
Intent
- El objeto intent queda descrito (atributos) por:
- Componente
- Acción
- Dato
- Categoría
- Extras
Intent Explícito
- Se le indica explícitamente el componente que queremos utilizar.
- Por ejemplo: Lanzar una activity en concreto.
Intent intent = new Intent(this, NuevaSubclaseActivity.class);
startActivity(intent);
- En este ejemplo ejecutamos una activity llamada NuevaSubclaseActivity.
Intent Implícito
- Se indica una acción y no un componente en concreto.
- Se usa para lanzar componentes de otras aplicaciones.
- Ejemplo: Hacer una llamada de teléfono:
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:934137660"));
startActivity(intent)
Intent.Component
- El nombre del componente, por ejemplo:
- com.jedi.MyActivity.class
- Sólo tiene sentido para los intents explícitos.
- Podemos definirlo y consultar:
- setComponent(ComponentName);
- getComponent(ComponentName);
Intent.Action
- Define el tipo de acción a ejecutar.
- Distintas acciones.
- Lista completa en:
- http://developer.android.com/reference/android/content/Intent.html
- Sólo tiene sentido para los intents implícitos.

Intent.Data
- Disponemos de distintos métodos para modificar los datos de un intent (necesarios para la acción):
- setData(URI): Sólo especifica la URI;
- setType(String): Sólo especifica el tipo y elimina cualquier información definida por setData()
- setDataAndType(URI, String): Se especifica tanto el dato mediante URI, como el tipo MIME
- getData() y getType()
URI (Uniform Resource Identifier)
- http://tools.ietf.org/html/rfc2396 (RFC 2396)
- Sintaxis:
- <esquema>://<usuariop>:<clave>@<host>:<puerto>/<solicitud>/ID

Intent.Category
- Las categorías nos permiten indicar detalles adicionales sobre la acción que será ejecutada.
- Un intent puede tener más de una categoría.
- Se añaden mediante addCategory(String)
- Se eliminan mediante removeCategory(String)
- Se pueden consultar con getCategorieS()

Intent.Extra
- Pares de clave-valor de información adicional para pasarla de un componente a otro.
- Bundle.put...(distintas funciones para cada tipo de dato)
- Intent.putExtras(Bundle), intent.putExtra(name, value)
- Bundle: para poner varios extras.
- getIntent()
- Intent.getExtras(): devuelve un Bundle
- getStringExtra() ... devuelve un único elemento
Intent-filters
- Sirven para filtrar los componentes por action, category y data.
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
Intents
By marcos_perez
Intents
- 999