15
Intent, Broadcast Receiver e Notifications Gustavo Henrique Rodrigues Pinto Tomas [email protected]

Android: Intent, Broadcast Receiver e Notifications

Embed Size (px)

DESCRIPTION

Slides da apresentação realizada no CESAR Sorocaba a respeito da plataforma Android: Intents, Broadcast Receiver e Notifications

Citation preview

Page 1: Android: Intent, Broadcast Receiver e Notifications

Intent, Broadcast

Receiver e Notifications

Gustavo Henrique Rodrigues Pinto Tomas

[email protected]

Page 2: Android: Intent, Broadcast Receiver e Notifications

Agenda

• Intent – Intent Filter

– Desafio 1

– Desafio 2

• Broadcast Receiver – Desafio 3

• Notifications – Desafio 4

16/02/2012 2

Page 3: Android: Intent, Broadcast Receiver e Notifications

Intent

• Comunicação de activities, services e broadcast

receiver;

• Inicia apenas uma ação;

• Falicita a comunicação em uma mesma

aplicação e entre aplicações;

• Envia e recebe dados (tipos primitivos, objetos

serializáveis...).

16/02/2012 3

Page 4: Android: Intent, Broadcast Receiver e Notifications

Intent(2)

• Exemplo: Intent it = new Intent(this, ViewFormActivity.class);

it.putExtra(ViewFormActivity.NAME_INTENT, name);

it.putExtra(ViewFormActivity.ADDRESS_INTENT, adress);

it.putExtra(ViewFormActivity.AGE_INTENT, age);

it.putExtra(ViewFormActivity.USER_INTENT, user);

startActivity(it);

16/02/2012 4

Boas Práticas: Ao setar a key em um método putExtra, utilize sempre constantes definidas como public na activity de destino

Page 5: Android: Intent, Broadcast Receiver e Notifications

Intent(3)

• Utilizando intents é possível invocar outras

aplicações através das respectivas actions.

• Exemplos: – Intent.ACTION_CALL: faz uma ligação;

– Intent.ACTION_DIAL: abre o aplicativo default de dial;

– Intent.ACTION_MAIN:

• CATEGORY_APP_EMAIL: abre o aplicativo de email;

• CATEGORY_APP_BROWSER: abre o browser;

• ATEGORY_APP_CONTACTS abre o aplicativo de calendario;

16/02/2012 5

Page 6: Android: Intent, Broadcast Receiver e Notifications

Intent Filter

• Mecanismo alternativo de invocar uma activity:

<activity android:name=“MInhaActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name=“ABRA_MINHA_ACTIVITY" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>

• Android fica ouvindo um intent com a ação ABRA_MINHA_ACTIVITY.Assim que receber

invocará MinhaActivity.

16/02/2012 6

Page 7: Android: Intent, Broadcast Receiver e Notifications

Desafio 1 - Intent

• Criar uma aplicação com duas telas: – A primeira será um formulário com os campos nome, endereço e

idade com um botão “Enviar”. Quando o usuário clicar no botão

as informações devem ser enviadas para a segunda activity;

– A segunda activity deve apenas receber os dados e exibir na

tela;

16/02/2012 7

Boas Práticas: Ao definir o id de um componente, utilize: android:id=“@+idNOMEDESCRITIVO/...” na qual NOMEDESCRITIVO pode ser um label para a activity

Page 8: Android: Intent, Broadcast Receiver e Notifications

Desafio 2: Intent

• Alterar a aplicação anterior para enviar as

informações a partir de uma classe chamada

Form, com as informações do formulário.

16/02/2012 8

Através de um intent é possível enviar objetos serializáveis

Page 9: Android: Intent, Broadcast Receiver e Notifications

BroadCast Receiver

• Permitir que a sua aplicação fique “ouvindo”

intents iniciados por qualquer aplicativo;

• Declaração no AndroidManifest.xml: </application>

<receiver android:name="ReceiverSample">

<intent-filter>

<action

android:name="android.intent.action.PHONE_STATE“ />

</intent-filter>

</receiver>

</application>

<uses-permission android:name="android.permission.CALL_PHONE"/>

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

16/02/2012 9

Page 10: Android: Intent, Broadcast Receiver e Notifications

BroadCast Receiver

• Quanto algum aplicativo enviar um intent do tipo

PHONE_STATE, será chamado o método

onReceive() da classe ReceiverSample;

• ReceiverSample deve estender de

BroadcastReceiver;

public class ReceiverSample extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

}

}

16/02/2012 10

Page 11: Android: Intent, Broadcast Receiver e Notifications

Desafio 3: Broadcast Receiver

• Alterar a aplicação Formulário para ao receber

uma chamada telefônica, interceptar e logar o

numero do telefone que esta ligando;

16/02/2012 11

Não se esquece de declarar a permissão de android.permission.READ_PHONE_STATE para ler as alterações de estado do telefone

Page 12: Android: Intent, Broadcast Receiver e Notifications

Notifications

• Mecanismo de feedback imediato ao usuário;

• Utilizado quando algum processamento em

background precisa de alguma iteração com o

usuário;

• Mais utilizado: Status Bar

16/02/2012 12

Page 13: Android: Intent, Broadcast Receiver e Notifications

Notifications: Status Bar String ns = Context.NOTIFICATION_SERVICE;

NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

CharSequence tickerText = "New call captured";

Notification notification = new Notification(R.drawable.ic_launcher, tickerText, when);

CharSequence contentTitle = "Phone Number";

CharSequence contentText = “Content message”;

Intent notificationIntent = new Intent(this, FormAPKActivity.class);

PendingIntent contentIntent = PendingIntent.getActivity(c, 0, notificationIntent, 0);

notification.setLatestEventInfo(this, contentTitle, contentText, contentIntent);

mNotificationManager.notify(HELLO_ID, notification);

16/02/2012 13

Page 14: Android: Intent, Broadcast Receiver e Notifications

Desafio 4: Status Bar

• Alterar a aplicação desenvolvida para assim que

receber uma ligação notificar o usuário usando

Status Bar com o número de telefone;

16/02/2012 14

Utilize o BroadcastReceiver criado no desafio anterior.

Page 15: Android: Intent, Broadcast Receiver e Notifications

Obrigado!

Gustavo Henrique Rodrigues Pinto Tomas

Email: [email protected]

Twitter: @gustahrodrigues

Código fonte disponível em: http://bit.ly/xGrlTW

16/02/2012 15