Curso Android Tema 4

10
Arquitectura de comunicación en Android Intents Yésica Hernández Jorge Frank Cesar Aguirre Comunicación e Intents

description

 

Transcript of Curso Android Tema 4

Page 1: Curso Android Tema 4

Arquitectura de comunicación en Android

Intents

Yésica Hernández Jorge Frank

Cesar Aguirre

Comunicación e Intents

Page 2: Curso Android Tema 4

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.

Comunicación e Intents

Page 3: Curso Android Tema 4

Arquitectura de comunicación en Android

Las actividades, servicios y los receptores de mensajes de difusión se comunican y son invocados mediante mensajes asíncronos llamados Intents y pueden o no esperar una respuesta despues de efectuar la llamada. Permiten invocar actividades de otras aplicaciones Permiten enviar datos mediante un objeto de tipo Bundle que puede contener objetos serializables Los elementos accesibles se pueden referenciar por su nombre de clase + paquete o bien por una URI

Reutilizar funciones de otras apps

Compartimos información

entre Actividades

Comunicación e Intents

Datos

Nombre clase o destino

Activity

Page 4: Curso Android Tema 4

Intents a detalle

Comunicación e Intents

Intent

Acción

Datos

Filtros

Resolución Nombre (Explícito)

URI

Bundle

Implícito (por contenido)

Leer

Editar

Componentes de la misma aplicación

Componentes de otras aplicaciones

Responder llamadas

Page 5: Curso Android Tema 4

Ejemplos de Intents

Comunicación e Intents

Clase: android.content.Intent

Intent intent = new Intent(this, OtraActividad.class); intent.putExtra(“Valor1", “Hola soy el valor 1"); intent.putExtra("Valor2", “Hola soy el valor 2");

Intent explicito: Enviar datos a otra actividad bien conocida o proceso

Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse("http://unam.mobi") );

Intento implícito, se resuelve por la acción y el tipo de contenido que se obtiene con la URI, responden todas las apps que pueden visualizar el contenido

Page 6: Curso Android Tema 4

Enviar un intent

Comunicación e Intents

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) {

}

Page 7: Curso Android Tema 4

Programemos el siguiente código

Comunicación e Intents

Clase: android.content.Intent

Intent compartir = new Intent(Intent.ACTION_SEND); compartir.setType("text/plain"); compartir.putExtra( android.content.Intent.EXTRA_TEXT, “Hola mundo!“ ); startActivity(Intent.createChooser( compartir, “Compartir usando") );

Se lanza el mensaje y se crea un menú para elegir el destinatario por el contexto del contenido.

Page 8: Curso Android Tema 4

Recibir los datos de un intent

Comunicación e Intents

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) {

}

Page 9: Curso Android Tema 4

Filtrado de intents

Filtros

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.

Page 10: Curso Android Tema 4

Filtrado de intents

Filtros

<intent-filter android:label="@string/resolve_title"> <action android:name="com.android.notepad.action.EDIT_TITLE" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.ALTERNATIVE" /> <category android:name="android.intent.category.SELECTED_ALTERNATIVE" /> <data android:mimeType="vnd.android.cursor.item/vnd.google.note" /> </intent-filter>