More Related Content Similar to DISPOSITIVOS MÓVILES: INTENT Y COMUNICACIONES (20) More from Jacinto Cabrera Rodríguez (20) DISPOSITIVOS MÓVILES: INTENT Y COMUNICACIONES9. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS
Los Intents permiten enviar o recibir
información desde y hacia otras
actividades o servicios.
10. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS
También, permiten lanzar mensajes de
tipo Broadcast para identificar cuando
ciertos eventos han ocurrido.
11. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS
ACTIVITY 1
ACTIVITY 2
ACTIVITY 3
INTENT
13. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS
INTENTS IMPLICITOS
INTENTS EXPLICITOS
14. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: EXPLICITOS
Los explícitos son aquellos que nombran
el componente que se necesita, ejemplo,
la clase Java específica que se necesita
para realizar alguna tarea.
15. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: EXPLICITOS
Intent ejemplo = new Intent(this, AcitividadDos.class);
activity.startActivity(ejemplo);
16. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: EL MANIFEST
<activity android:name=".MiActivity"
android:label="Mi Activity">
<intent -filter>
<action android:name="nuestra.accion.nombreAccion"/>
<category android:name="android.intent.category.DEFAULT”/>
</intent>
</activity>
17. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: DETECTAR LA LLAMADA
Intent ejemplo= this.getIntent();
if (ejemplo == null){
Log.d("Tag", "La actividad no se ha llamado mediante un intent.")
}
18. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: IMPLICITOS
Los implícitos son aquellos que le
preguntan al sistema qué servicio o
componente es el más adecuado para
realizar la petición, es decir, no
específica un componente en especial.
19. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: IMPLICITOS
publicstaticvoidinvocaNavegador(Activity activity){
Intentejemplo=newIntent(Intent.ACTION_VIEW);
ejemplo.setData(Uri.parse("http://www.jaen.es"));
activity.startActivity(ejemplo);
}
20. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: IMPLICITOS
publicstaticvoidinvocaBuscador(Activity activity){
Intentejemplo=newIntent(Intent.ACTION_WEB_SEARCH);
ejemplo.putExtra(SearchManager.QUERY, CADENA);
activity.startActivity(ejemplo);
}
21. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: IMPLICITOS
publicstaticvoidinvocaTelefono(Activity activity){
Intentejemplo=newIntent(Intent.ACTION_DIAL
Uri.parse("tel:NÚMERO"));
activity.startActivity(ejemplo);
}
22. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: IMPLICITOS
publicstaticvoidinvocaTelefono (Activityactivity){
Intentejemplo=newIntent(Intent.ACTION_CALL);
ejemplo.setData(Uri.parse("tel:NÚMERO”));
activity.startActivity(ejemplo);
}
23. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: IMPLICITOS
publicstaticvoidinvocaMapa(Activity activity){
Intentejemplo=newIntent(Intent.ACTION_VIEW);
ejemplo.setData(Uri.parse("geo:0,0?z=4&q=institutos"));
activity.startActivity(ejemplo);
}
24. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: IMPLICITOS
publicstaticvoidinvocaCamara(Activity activity){
Intentejemplo=newIntent(android.media.action.IMAGE_CAPTURE);
activity.startActivity(ejemplo);
}
25. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: IMPLICITOS
publicstaticvoidinvocaContactos(Activity activity){
Intentejemplo=newIntent(Intent.ACTION_VIEW,
Uri.parse("content://contacts/people/"));
activity.startActivity(ejemplo);
}
27. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
setFlag()
putExtras()FLAGS
addCategory()EXTRAS
SetType(), setDataAndType()CATEGORÍA
SetData()TIPO DE DATOS
setComponent() setClass() setClassName()setAction()DATOS
Intent i = new Intent (this, Clase.class);ACCIÓN
NOMBRE DEL COMPONENTE
LOS INTENTS
28. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: NOMBRE
Identificamos el componente que
queremos lanzar con el Intent.
Podemos utilizar el nombre de clase
totalmente cualificado
(es.vcarmen.Actividad)
29. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: NOMBRE
Intentintent=newIntent();
//USANDOsetComponent()
ComponentName componente =newComponentName(this, Actividad.class);
intent.setComponent(componente);
//USANDOsetClass()
intent.setClass(this, Actividad.class);
//USANDOsetClassName()
intent.setClassName(“es.vcarmen", “es.vcarmen.Actividad");
startActivity(intent);
30. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: ACCIÓN
Cadena de Texto que informa la acción
a realizar.
ACTION_CALL
ACTION_SET_WALLPAPER
ACTION_DELETE
31. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: ACCIÓN
ACCIONES DEFINIDAS POR EL USUARIO
ACCIONES AUXILIARES
ACCIONES GENÉRICAS
32. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: ACCIÓN
ACCIONES DEFINIDAS POR EL USUARIO
static final String ACTION_MIA = "com.example.action.MIA";
<intent -filter>
<action android:name="nuestra.accion.ACTION_MIA"/>
<category android:name="android.intent.category.DEFAULT”/>
</intent>
</activity>
33. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: DATOS
Contiene la URI (Uniform Resource
Identifier) de los datos sobre los que
los componentes que reciba el Intent
debe trabajar
34. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: TIPO DE DATOS
El tipo de datos determina que
componente procesará los datos.
35. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: TIPO DE DATOS
Intent correo= new Intent();
correo.setAction(Intent.ACTION_SEND);
correo.putExtra(Intent.EXTRA_TEXT, mensaje);
correo.setType("text/plain");
36. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: CATEGORIA
Complementa a la acción. Indica
información adicional sobre el tipo de
componente que ha de ser lanzado.
CATEGORY_BROWSABLE
CATEGORY_HOME
CATEGORY_LAUNCHER
CATEGORY_PREFERENCE
37. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: EXTRAS
Información adicional que será
recibida por el componente lanzado.
Está formada por un conjunto de
pares variable/valor. Estas colecciones
de valores se almacenan en un objeto
de la clase Bundle.
38. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: EXTRAS
RELLENAR BUNDLE CON DATOS
putExtra(String name, boolean value);
putExtra(String name, int value);
putExtra(String name, double value);
putExtra(String name, String value);
39. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: EXTRAS
OBTENER UN BUNDLE
Bundle b = intent.getExtras();
40. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: EXTRAS
AÑADIR BUNDLE DE OTROS INTENTS
putExtra (String name Intent otroIntent)
41. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: EXTRAS
AÑADIR BUNDLE AL INTENT
intent.putExtras(b2)
42. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: FLAGS
Metadatos que indican al sistema
Android como iniciar la actividad y
sirven para determinar el
comportamiento del componente que
atienda la petición.
43. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
FLAG_ACTIVITY_FORWARD_RESULT
LOS INTENTS: FLAGS
FLAG_ACTIVITY_NEW_DOCUMENT
FLAG_ACTIVITY_CLEAR_TASK
FLAG_FROM_BACKGROUND
45. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
BROADCAST
SERVICE
ACTIVITY
LOS INTENTS: PROPAGACIÓN
46. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PROPAGACIÓN ACTIVITY
Mecanismo para iniciar una nueva
pantalla (Actividad) dentro de nuestra
aplicación.
47. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
Context.startActivityForResult()
Context.startActivity()
LOS INTENTS: PROPAGACIÓN ACTIVITY
48. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PROPAGACIÓN ACTIVITY
STARTACTIVITY
Intent ejemplo = new Intent(this, AcitividadDos.class);
activity.startActivity(ejemplo);
49. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PROPAGACIÓN ACTIVITY
STARTACTIVITYFORRESULT: ActividadUno.Class
private static final int REQUEST_CODE = 10;
--------
Intent ejemplo = new Intent(this, ActividadDos.class);
activity.startActivityForResult(ejemplo, REQUEST_CODE);
50. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PROPAGACIÓN ACTIVITY
STARTACTIVITYFORRESULT
ACTIVIDAD 1
startActivityForResult
REQUEST_CODE
ACTIVIDAD 2
SetResult
RESULT_OK
ACTIVIDAD 1
onActivityResult
REQUEST_CODE?
RESULT_OK?
REQUEST_CODE
RESULT_OK
REQUEST_CODE
51. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PROPAGACIÓN ACTIVITY
STARTACTIVITYFORRESULT: ActividadDos.Class
@Override
public void finish() {
Intent data = new Intent();
data.putExtra(“RETORNO", “Este es el valor de retorno");
setResult(RESULT_OK, data);
super.finish();
}
52. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PROPAGACIÓN ACTIVITY
STARTACTIVITYFORRESULT: ActividadUno.Class
@Override
protected void onActivityResult(intrequestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
if (data.hasExtra(“RETORNO")) {
CODIGO A REALIZAR
}
}
}
53. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PROPAGACIÓN SERVICE
Para iniciar un Servicio, para modificar
su comportamiento o para establecer
conexión entre componentes.
54. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
Context.bindService()
Context.stopService()
Context.startService()
LOS INTENTS: PROPAGACIÓN SERVICE
55. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PROPAGACIÓN BROADCAST
Para enviar mensajes a todos los
receptores registrados.
56. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
Context.sendStickyOrdererBroadcast()
Context.sendStickyBroadcast()
Context.sendOrdererBroadcast()
Context.sendBroadcast()
LOS INTENTS: PROPAGACIÓN BROADCAST
57. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PROPAGACIÓN BROADCAST
Cuando creamos una nueva
actividades, servicios o receptor
broadcast podemos informar al sistema
que tipo de intent implícito pueden ser
lanzado con nuestro componente.
59. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: FILTROS
Determinan la acción que puede llevar
a cabo un componente y los tipos de
Intents que pueden gestionarla.
60. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
FILTROS POR TIPO DE DATOS
FILTROS POR CATEGORÍA
FILTROS POR ACCIÓN
LOS INTENTS: FILTROS
63. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PENDINGINTENT
Un especifica una acción a realizar
en el futuro. Pasa un intent futuro
a otra aplicación y la permisos
como si la aplicación creadora
estuviese aún en vigor.
64. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PENDINGINTENT
Puede ser ejecutado en un cierto
momento de tiempo en el futuro
a través de la AlarmManager
provocar que se ejecute cuando el
usuario realice alguna acción.
65. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
PendingIntent.getService()
PendingIntent.getBroadcast()
PendingIntent.getActivity()
LOS INTENTS: PENDINGINTENT
66. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PENDINGINTENT
PendingIntent.getActivity()
Recupera un PendingIntent para
comenzar una actividad.
67. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PENDINGINTENT
PendingIntent.getBroadcast()
Recupera un PendingIntent para
escuchar una emisión.
68. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PENDINGINTENT
PendingIntent.getService()
Recupera un PendingIntent para
iniciar un servicio.
69. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PENDINGINTENT
Intent intent = new Intent(this, Actividad.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
try {
CÓDIGO ACCIÓN
pendingIntent.send();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}
70. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LOS INTENTS: PENDINGINTENT
Intent intent = new Intent(this, Actividad.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, 0);
AlarmManager alarma= (AlarmManager) getSystemService(ALARM_SERVICE);
alarma.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() +
(seconds * 1000), pendingIntent);
71. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
BANDERAS
INTENT
CÓDIGO DE LOCALIZACIÓN
CONTEXTO
LOS INTENTS: PENDINGINTENT
ELEMENTOS
72. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
RECEPCIÓN DE BROADCAST
PROPAGACIÓN DE SERVICIOS
ACTIVIDAD DE INVESTIGACIÓN
73. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
PROGRAMACIÓN MULTIMEDIA
Y
DISPOSITIVOS MÓVILES