View
5.135
Download
1
Category
Preview:
DESCRIPTION
Slides da apresentação realizada no CESAR Sorocaba a respeito da plataforma Android: Intents, Broadcast Receiver e Notifications
Citation preview
Intent, Broadcast
Receiver e Notifications
Gustavo Henrique Rodrigues Pinto Tomas
gustavo.rodrigues@cesar.org.br
Agenda
• Intent – Intent Filter
– Desafio 1
– Desafio 2
• Broadcast Receiver – Desafio 3
• Notifications – Desafio 4
16/02/2012 2
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
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
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
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
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
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
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
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
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
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
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
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.
Obrigado!
Gustavo Henrique Rodrigues Pinto Tomas
Email: gustavo.rodrigues@cesar.org.br
Twitter: @gustahrodrigues
Código fonte disponível em: http://bit.ly/xGrlTW
16/02/2012 15
Recommended