View
389
Download
0
Category
Preview:
Citation preview
Análisis y Diseño de Software
Departamento de Ingeniería de Sistemas Telemáticoshttp://moodle.dit.upm.es
IntencionesActividades 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?
Recommended