3. 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
4. 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);
Boas Práticas: Ao setar a key em um método putExtra, utilize
sempre constantes definidas como public na activity de
destino
16/02/2012 4
5. 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
6. 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
7. 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;
Boas Práticas: Ao definir o id de um componente, utilize:
android:id=“@+idNOMEDESCRITIVO/...” na qual
NOMEDESCRITIVO pode ser um label para a activity
16/02/2012 7
8. 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.
Através de um intent é possível enviar objetos serializáveis
16/02/2012 8
9. 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
10. 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
11. 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;
Não se esquece de declarar a permissão de
android.permission.READ_PHONE_STATE para ler as
alterações de estado do telefone
16/02/2012 11
12. 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
14. 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;
Utilize o BroadcastReceiver criado no desafio anterior.
16/02/2012 14