1. Análisis y Diseño
de Software
Departamento de Ingeniería de Sistemas Telemáticos
http://moodle.dit.upm.es
Intenciones
Actividades que se comunican
Carlos A. Iglesias <cif@gsi.dit.upm.es>
2. Intenciones 2
Temario
● 4.1 Introducción a Android
● 4.2 Introducción Desarrollo con Android
● 4.3 Ejemplo Desarrollo y Depuración
● 4.4 Actividades
● 4.5 Interfaces de Usuario
● 4.6 Intenciones
● 4.7 Acceso a Datos
● 4.8 Preferencias
● 4.9 Hebras e internacionalización
5. Intenciones 5
Objetivos
● Aprender a hacer aplicaciones con más de
una pantalla
● Entender cómo funciona el mecanismo de
Intenciones en Android
6. Intenciones 6
Intenciones
● Una aplicación en Android normalmente
tiene varias actividades
● Para pasar el control de una actividad a
otra usamos Intenciones (Intent)
● Las actividades se comunican entre sí de
forma asíncrona e indirecta
7. Intenciones 7
Tipos de intenciones
● Explícita: indicamos el componente (clase
exacta) que va a ejecutar la intención
● Implícita: el sistema determina (resuelve)
qué componente debe procesar al
intención.
– Si hay más de una aplicación que puede
realizar esa intención, el usuario puede
seleccionar cuál usar
8. Intenciones 8
Creando una intención
implícita
● Las intenciones implícitas se construyen
indicando
– Acción: acción que queremos ejecutar,
predefinida (ACTION_VIEW, ACTION_DIAL,
…) o creada por el usuario.
– Datos: datos sobre los que opera la acción
expresados como una URI (número de
teléfono, contacto, ...)
9. Intenciones 9
Ej. Intención implícita
predefinida
● Llamar por teléfono
●Abrir una página web
http://developer.android.com/guide/appendix/g-app-intents.html
10. Intenciones 10
Intenciones explícitas
● Indicamos de que actividad (this) a qué
actividad queremos ir
● Podemos pasar datos con putExtra()
– En la actividad que recibe la Intent, los
recupera con getExtras().getString(“clave”) (o
getBoolean(), getInt()... mirar api de Bundle).
11. Intenciones 11
Actividades e Intenciones
Actividad Main
Sub-Actividad 1
Sub-actividad 2
Intent Result Intent
Aplicación
Android
12. Intenciones 12
Ejemplo pares acción / datos
● ACTION_VIEW content://contacts/people/1 –
muestra información sobre la persona con id 1
● ACTION_DIAL content://contacts/people/1 – muestra
el teléfono con el número marcado de la persona con
id 1
● ACTION_VIEW (o ACTION_DIAL) tel:134 – muestra
el teléfono con el número 134 marcado
● ACTION_EDIT content://contacts/people/1 – edita la
información del contacto con id 1
● ACTION_VIEW content://contacts/people – muestra
una lista de contactos
13. Intenciones 13
Parámetros adicionales
● Además de los parámetros principales,
podemos detallar más
– Type: MIME type, normalmente se pone bien
solo.
– Extras: añadir más datos para una acción.
P.ej. Para email (subject, body, …)
15. Intenciones 15
Verificar intenciones
implícitas
● En las intenciones implícitas, podemos
comprobar si algún componente va a
responder a la intención
● P.ej. En nuestro teléfono no hay una
característica
17. Intenciones 17
Selección de aplicación por
el usuario
● Cuando hay varias
aplicaciones que
pueden realizar una
intención, el usuario
puede escoger una
por defecto
● En otras ocasiones,
queremos que
escoja cada vez, se
utiliza un 'chooser'
20. Intenciones 20
Invocar una intención
● startActivity(intent) → lanza una actividad
● sendBroadcast(intent) → envía una intención a todos
los componentes BroadcastReceiver
● startActivityForResult(intent, requestCode) →
– lanza una actividad, que devuelve un resultado con
setResult(resultCode), predefinidos: RESULT_OK o
RESULT_CANCELED, o bien personalizados
comenzando en RESULT_FIRST_USER.
• Para volver a la actividad anterior llamamos a finish() para
terminar la actividad
– La actividad recibe el resultado en el método de callback
onActivityResult(requestCode,resultCode,intent)
23. Intenciones 23
Filtros de intenciones (I)
● Si queremos que una actividad nuestra pueda ser
lanzada por otra actividad de otra aplicación, debemos
indicar un 'intent-filter' en el manifiesto. Declaramos
– Action – nombre de la acción que realizamos.
Normalmente uno predefinido como ACTION_SEND (para
compartir) o ACTION_VIEW
– Data – descripción de los datos asociados: tipo mime
(text/plain) o prefijo URI (htt) o una combinación
– Categoría: gesto o sitio desde puede ser llamado,
normalmente CATEGORY_DEFAULT
27. Intenciones 27
Ejemplo. Activar Acciones
estándar
●Vamos a hacer un
ejemplo
– Llamar a
intenciones
estándar
– Lanzar otras
actividades
28. Intenciones 28
Crear Lista Opciones
ListView para ver una lista
@android:id/list → layout
de Android para listas
@android:id/empty → si la
lista está vacía
39. Intenciones 39
Seleccionar un contacto
● En este caso llamo a una actividad
– Me devuelve un resultado
● Con el resultado llamo a otra actividad
● Para esto, uso
– startActivityForResult()
– onActivityResult()
42. Intenciones 42
Pasar datos entre
Actividades
● Tipos primitivos
– Pasarlo en el Intent (con putExtra)
– Si tiene que persistir, usar Preferencias
● Objetos no persistentes
– Usar una clase Singleton
– Las actividades extienden la clase android.app.Application y
recuperan los campos con getApplicationContext()
● Objetos persistentes:
– Preferencias, Base de Datos, Proveedores de Contenidos,
Ficheros
http://developer.android.com/guide/faq/framework.html
46. Intenciones 46
Resumen
● En este tema hemos aprendido a
– Definir preferencias de usuario, y usarlas en un
programa
– Qué son las intenciones, y comunicar
actividades mediante ellas
– Algunas acciones estándar para lanzar
actividades