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);
  • 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)

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>

11 - Intents

By androidjedi

11 - Intents

  • 506