SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
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>
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
Intenciones 3
Teoría
Ejercicio práctico en el ordenador
Ampliación de conocimientos
Lectura / Vídeo / Podcast
Práctica libre / Experimentación
Leyenda
Intenciones 4
● Android Developers
Bibliografía
http://developer.android.com/training/basics/intents/index.html
Intenciones 5
Objetivos
● Aprender a hacer aplicaciones con más de
una pantalla
● Entender cómo funciona el mecanismo de
Intenciones en Android
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
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
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, ...)
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
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).
Intenciones 11
Actividades e Intenciones
Actividad Main
Sub-Actividad 1
Sub-actividad 2
Intent Result Intent
Aplicación
Android
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
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, …)
Intenciones 14
Acciones estándar para
Intenciones
●ACTION_MAIN
●ACTION_VIEW
●ACTION_ATTACH_DATA
●ACTION_EDIT
●ACTION_PICK
●ACTION_CHOOSER
● ACTION_GET_CONTENT
●ACTION_DIAL
●ACTION_CALL
●ACTION_SEND
●ANCTION_SENDTO
●ACTION_ANSWER
●ACTION_INSERT
●ACTION_DELETE
●ACTION_RUN
●ACTION_SYNC
●ACTION_PICK_ACTIVITY
●ACTION_SEARCH
●ACTION_WEB_SEARCH
●ACTION_FACTORY_TEST
http://developer.android.com/reference/android/content/Intent.html
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
Intenciones 16
Ej. mapas comprobando si es
seguro
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'
Intenciones 18
Ej. chooser
Intenciones 19
Formas de pasar el control
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)
Intenciones 21
Obtener un resultado
Intenciones 22
onActivityResult()
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
Intenciones 24
Filtros de Intenciones (II)
Intenciones 25
Varios filtros
● Determinamos qué tipo de intención nos
llamó si tenemos varios filtros
Intenciones 26
Devolver resultado
● Indicamos resultado con setResult() y
finish()...
●Y así vuelve a la actividad que le llamó
Intenciones 27
Ejemplo. Activar Acciones
estándar
●Vamos a hacer un
ejemplo
– Llamar a
intenciones
estándar
– Lanzar otras
actividades
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
Intenciones 29
Crear Lista opciones
Intenciones 30
¡Lanzamos!
Intenciones 31
Vamos a usar Intenciones
Intenciones 32
Acción estándar: llamar
Intenciones 33
Acción estándar:
listar contactos
Hay que
crearlos
en el
emulador
Intenciones 34
Acción estándar:
editar/ver contacto
Intenciones 35
Acción estándar: ver web
Intenciones 36
Acción estándar:
mandar correo
Intenciones 37
Acción estándar:
compartir
Intenciones 38
Emulador vs real
No encuentra actividad que
mande correo
Sí va en el teléfono
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()
Intenciones 40
Seleccionar un contacto
Intenciones 41
Seleccionar un contacto
Necesario para el
código anterior
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
Intenciones 43
Ejemplo ListaCompra. Editar
Intenciones 44
Ejemplo ListaCompra. Añadir
Intenciones 45
Ejemplo
● Inspeccionar...
– ¿Cómo guardamos
los productos?
– ¿Cómo se
comunican las
actividades?
– ¿Cómo hacemos el
menú?
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
Intenciones 47
¿Preguntas?

Contenu connexe

Similaire à Tema 4.6 Intenciones

La practica una vision general
La practica una vision generalLa practica una vision general
La practica una vision generalTensor
 
Trabajo grupal
Trabajo grupalTrabajo grupal
Trabajo grupalJosAGRAGR
 
Formato espacio de aprendizaje u2 ea2 jis
Formato espacio de aprendizaje u2 ea2 jisFormato espacio de aprendizaje u2 ea2 jis
Formato espacio de aprendizaje u2 ea2 jisJavier Correa
 
Formato espacio de aprendizaje u2 ea2 jis
Formato espacio de aprendizaje u2 ea2 jisFormato espacio de aprendizaje u2 ea2 jis
Formato espacio de aprendizaje u2 ea2 jisJavier Correa
 
Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2IrisGM
 
Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2IrisGM
 
Examen MañAna
Examen MañAnaExamen MañAna
Examen MañAnabochaperu
 
Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2IrisGM
 
Píldoras android i. Intro - 2ª parte
Píldoras android i. Intro - 2ª partePíldoras android i. Intro - 2ª parte
Píldoras android i. Intro - 2ª parteSergi Martínez
 
Portafolio Computación Aplicada
Portafolio Computación AplicadaPortafolio Computación Aplicada
Portafolio Computación AplicadaKaren Wilches Celi
 
Formato espacio de aprendizaje u2 ea2
Formato espacio de aprendizaje u2 ea2Formato espacio de aprendizaje u2 ea2
Formato espacio de aprendizaje u2 ea2Javier Correa
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidAlberto Ruibal
 
Tercer semestre en programación 1-E CETIS 28
Tercer semestre  en programación 1-E CETIS 28 Tercer semestre  en programación 1-E CETIS 28
Tercer semestre en programación 1-E CETIS 28 Darkmoster
 

Similaire à Tema 4.6 Intenciones (20)

Tema
Tema Tema
Tema
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
La practica una vision general
La practica una vision generalLa practica una vision general
La practica una vision general
 
Make Code
Make CodeMake Code
Make Code
 
Trabajo grupal
Trabajo grupalTrabajo grupal
Trabajo grupal
 
Formato espacio de aprendizaje u2 ea2 jis
Formato espacio de aprendizaje u2 ea2 jisFormato espacio de aprendizaje u2 ea2 jis
Formato espacio de aprendizaje u2 ea2 jis
 
Formato espacio de aprendizaje u2 ea2 jis
Formato espacio de aprendizaje u2 ea2 jisFormato espacio de aprendizaje u2 ea2 jis
Formato espacio de aprendizaje u2 ea2 jis
 
Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2
 
Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2
 
Examen MañAna
Examen MañAnaExamen MañAna
Examen MañAna
 
Yo
YoYo
Yo
 
Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2Tips informáticos grupo#1_domingo - 2
Tips informáticos grupo#1_domingo - 2
 
Píldoras android i. Intro - 2ª parte
Píldoras android i. Intro - 2ª partePíldoras android i. Intro - 2ª parte
Píldoras android i. Intro - 2ª parte
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Android
 
Portafolio Computación Aplicada
Portafolio Computación AplicadaPortafolio Computación Aplicada
Portafolio Computación Aplicada
 
Formato espacio de aprendizaje u2 ea2
Formato espacio de aprendizaje u2 ea2Formato espacio de aprendizaje u2 ea2
Formato espacio de aprendizaje u2 ea2
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Android Pres3
Android Pres3Android Pres3
Android Pres3
 
Tercer semestre en programación 1-E CETIS 28
Tercer semestre  en programación 1-E CETIS 28 Tercer semestre  en programación 1-E CETIS 28
Tercer semestre en programación 1-E CETIS 28
 
Ejercicios java parte 1
Ejercicios java parte 1Ejercicios java parte 1
Ejercicios java parte 1
 

Plus de Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.7 Acceso a datos
Tema 4.7 Acceso a datosTema 4.7 Acceso a datos
Tema 4.7 Acceso a datos
 
Tema 4.9 Hebras
Tema 4.9 HebrasTema 4.9 Hebras
Tema 4.9 Hebras
 
Gestion de Ideas
Gestion  de IdeasGestion  de Ideas
Gestion de Ideas
 
Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.
 

Tema 4.6 Intenciones

  • 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
  • 3. Intenciones 3 Teoría Ejercicio práctico en el ordenador Ampliación de conocimientos Lectura / Vídeo / Podcast Práctica libre / Experimentación Leyenda
  • 4. Intenciones 4 ● Android Developers Bibliografía http://developer.android.com/training/basics/intents/index.html
  • 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, …)
  • 14. Intenciones 14 Acciones estándar para Intenciones ●ACTION_MAIN ●ACTION_VIEW ●ACTION_ATTACH_DATA ●ACTION_EDIT ●ACTION_PICK ●ACTION_CHOOSER ● ACTION_GET_CONTENT ●ACTION_DIAL ●ACTION_CALL ●ACTION_SEND ●ANCTION_SENDTO ●ACTION_ANSWER ●ACTION_INSERT ●ACTION_DELETE ●ACTION_RUN ●ACTION_SYNC ●ACTION_PICK_ACTIVITY ●ACTION_SEARCH ●ACTION_WEB_SEARCH ●ACTION_FACTORY_TEST http://developer.android.com/reference/android/content/Intent.html
  • 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
  • 16. Intenciones 16 Ej. mapas comprobando si es seguro
  • 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'
  • 19. Intenciones 19 Formas de pasar el control
  • 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
  • 24. Intenciones 24 Filtros de Intenciones (II)
  • 25. Intenciones 25 Varios filtros ● Determinamos qué tipo de intención nos llamó si tenemos varios filtros
  • 26. Intenciones 26 Devolver resultado ● Indicamos resultado con setResult() y finish()... ●Y así vuelve a la actividad que le llamó
  • 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
  • 31. Intenciones 31 Vamos a usar Intenciones
  • 33. Intenciones 33 Acción estándar: listar contactos Hay que crearlos en el emulador
  • 38. Intenciones 38 Emulador vs real No encuentra actividad que mande correo Sí va en el teléfono
  • 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()
  • 41. Intenciones 41 Seleccionar un contacto Necesario para el código anterior
  • 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
  • 45. Intenciones 45 Ejemplo ● Inspeccionar... – ¿Cómo guardamos los productos? – ¿Cómo se comunican las actividades? – ¿Cómo hacemos el menú?
  • 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