1. Comunicación e Intents
Arquitectura de comunicación en Android
Intents
Yésica Hernández
Jorge Frank
Cesar Aguirre
2. Comunicación e Intents
Arquitectura de comunicación en
Android
Todo en android está formado por agrupaciones de componentes.
Cada componente puede ser invocado de manera independiente
Por ejemplo, puedo solicitar acceso a los contactos de la
agenda o bien a la lista de archivos multimedia desde
cualquier aplicación.
Cada componente esta identificado por su clase o bién si es un
archivo por una URI que es un identificador único similar a una url
web.
Esta comunicación se logra a través de mensajes que son
escuchados por el sistema operativo y reenviados a las aplicaciones
y componentes destino, como una oficina postal.
3. Comunicación e Intents
Arquitectura de comunicación en
Android
Las actividades, servicios y los receptores de mensajes de difusión
Reutilizar se comunican y son invocados mediante mensajes asíncronos
funciones de llamados Intents y pueden o no esperar una respuesta despues de
otras apps efectuar la llamada.
Permiten invocar actividades de otras aplicaciones
Permiten enviar datos mediante un objeto de tipo Bundle que puede
contener objetos serializables
Compartimos
información Los elementos accesibles se pueden referenciar por su nombre de
entre clase + paquete o bien por una URI
Actividades
Nombre
clase o
destino
Activity
Datos
4. Comunicación e Intents
Intents a detalle
Leer
Implícito Acción
(por contenido) Editar
Componentes de la misma
aplicación URI
Resolu
Nombre (Explícito) ción Intent Datos Bundle
Responder llamadas
Filtros
Componentes de otras
aplicaciones
5. Comunicación e Intents
Ejemplos de Intents
Clase: android.content.Intent
Intent explicito: Intent intent = new Intent(this, OtraActividad.class);
Enviar datos a otra intent.putExtra(“Valor1", “Hola soy el valor 1");
actividad bien intent.putExtra("Valor2", “Hola soy el valor 2");
conocida o proceso
Intent intent = new Intent( Intento implícito, se
Intent.ACTION_VIEW, resuelve por la acción y
Uri.parse("http://unam.mobi") el tipo de contenido que
); se obtiene con la URI,
responden todas las
apps que pueden
visualizar el contenido
6. Comunicación e Intents
Enviar un intent
Las clases que heredan de Activity y Process tienen los siguientes métodos para
Llamar otras aplicaciones o componentes
startActivity(Intent)
Llamar y esperar una respuesta de otras aplicaciones o componentes
startActivityForResult( Intent, A_REQUEST_ID );
Usar el metodo para recibir la respuesta y un switch usando el A_REQUEST_ID
@Override
protected void onActivityResult( int
requestCode, int resultCode, Intent data) {
…
}
7. Comunicación e Intents
Programemos el siguiente código
Clase: android.content.Intent
Intent compartir = new
Se lanza el mensaje Intent(Intent.ACTION_SEND);
y se crea un menú compartir.setType("text/plain");
para elegir el
destinatario por el
compartir.putExtra(
contexto del android.content.Intent.EXTRA_TEXT,
contenido. “Hola mundo!“
);
startActivity(Intent.createChooser(
compartir,
“Compartir usando")
);
8. Comunicación e Intents
Recibir los datos de un intent
Las clases que heredan de Activity y Process tienen los siguientes métodos para
Obtener los datos del Intent recibido
Ya sea que inició la actividad o es resultado de otra comunicación
Bundle extras = getIntent().getExtras();
if (extras == null) {
return;
}
String valor1 = extras.getString("Valor1");
String valor2 = extras.getString("Valor2");
if (valor1 != null && valor2 != null) {
…
}
9. Filtros
Filtrado de intents
El verdadero poder de los intents recide en el concepto de acciones de los
intents.Con estos sólo se describe el tipo de acción que se quiere realizar y
opcionalmente los datos sobre los que se quiere llevar el intent
La manera en que el sistema identifica el componente que puede responder es a
través de la comparación del intent con los ontentfilters que están en el Android
Manifest de las demás aplicaciones en el dispositivo.
Cuando declaramos un compnente en el manifest, podemos incluir intent filters
que declaran las capacidades del componente y así poder responder intents de
otras aplicaciones.