Apresentação do PowerPoint - Campus Monte Castelo

Propaganda
Desenvolvimento de um aplicativo básico usando o Google Android
(Intent e Intent Filter)
Programação de Dispositivos Móveis
Mauro Lopes Carvalho Silva
Professor EBTT
DAI – Departamento de Informática
Campus Monte Castelo
Instituto Federal de Educação Ciência e Tecnologia do Maranhão
Programação de Dispositivos Móveis – 7º Período
Objetivos
• Nesta aula iremos apresentar uma classe que
representa o coração do Android: Intent. Uma
Intent representa uma mensagem da aplicação
para o Sistema Operacional, solicitando que algo
seja realizado. Vamos entender como utilizá-la.
Nosso objetivo principal é aproximar o aluno do
desenvolvimento de um aplicativo básico.
Programação de Dispositivos Móveis – 7º Período
Plano de Aula
• Intent






O que é?
Navegação entre telas;
Passagem de parâmetros para a próxima Tela;
Captura dos conteúdos dos parâmetros enviados;
Intents Nativas do Android
Implementação
 Intent Filter





O que é?
Configuração
Ação e Categoria: como identificar uma Intent
Implementação
Por que criar uma ação e categoria para uma Intent?
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
O que é uma Intent
• A Intent representa uma “ação” que a aplicação deseja executar.
A tradução de intent é “intenção”, de forma que podemos dizer
que uma intent representa a intenção da aplicação de realizar
determinada tarefa;
• Na prática essa intenção é enviada ao sistema operacional como
uma mensagem, chamada de broadcast. Ao receber a
mensagem, o sistema operacional tomará as decisões
necessárias, dependendo do conteúdo da mensagem, isto é, de
sua intenção;
• Uma Intent pode ser utilizada para:
•
•
•
•
•
Enviar uma mensagem para o Sistema Operacional;
Abrir uma nova tela da aplicação;
Ligar para outro celular;
Abrir o navegador;
E muitas outras ações.
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Navegação entre Telas
• Relembrando: Para cada tela de nossa aplicação, deveremos
criar uma nova classe do tipo Activity;
• Com auxílio da classe Intent iremos chamar uma nova Activity;
• A classe Intent possui duas formas para desempenhar esta ação:
• startActivity(objeto Intent)
• startActivityForResult(objeto Intent, codigo)
• Para usarmos estes métodos é necessário ter um objeto Intent:
Intent it = new Intent(this,NovaActivity.class);
startActivity(it);
• Neste trecho de
NovaActivity.class;
código
iremos
“startar”
a
Activity
• O método startActivityForResult faz uso do parâmetro código
para identificar a Activity que será chamada.
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Passagem de parâmetros para a próxima Tela
• Após entendermos como chamar uma nova Activity, vamos
entender como passar parâmetros de uma Tela para outra;
• Para isso existe a classe android.os.Bundle;
• Esta classe é semelhante a um HashTable, com a possibilidade de
informar valores no padrão chave,valor;
• Para passarmos dados para outra tela é importante termos um
objeto Bundle:
Intent it = new Intent(this,NovaActivity.class);
Bundle params = new Bundle();
params.putString(“msg”,”Olá Pessoal”);
it.putExtras(params);
startActivity(it);
• No método putString temos a chave “msg” e o valor “Olá Pessoal”.
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Captura dos conteúdos dos parâmetros enviados
• Após entendermos como enviar dados para a nova Activity,
vamos entender como capturar as informações passadas a ela;
• Para recuperar as informações precisamos de um objeto Intent e
de um objeto Bundle:
•
•
•
•
•
Intent it = getIntent();
Bundle params = it.getExtras();
String valor = params.getString(“msg”);
Este código deve ser escrito na Activity NovaActivity.class;
Recuperamos o objeto Intent associado a esta Activity;
Obtemos um objeto Bundle, params, através do método getExtras();
Usando o método getString() de params, recuperamos o valor
repassado;
Para tal, usamos a chave “msg”, recuperando o valor “Olá Pessoal”.
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Intents nativas do Android
• Para chamar uma Activity usamos startActivity(), passando
como parâmetro a classe que representa a Activity a ser
chamada;
• No entanto temos uma outra forma de chamar uma Activity,
passando uma String como parâmetro para startActivity();
• Esta String representa uma ação, e faz o mapeamento para
chamar uma determinada Activity;
• Para chamar por exemplo o Navegador, usamos uma constante
Intent.ACTION_VIEW;
• Como já sabemos, esta mensagem é enviada ao Sistema
Operacional, que mapeia o seu conteúdo para algo do tipo
“entendi a mensagem, preciso abrir o navegador”;
• Vamos olhar como seria através de um trecho de código.
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Intents nativas do Android
• Vamos analisar o código que chama uma nova Activity que
representa o Navegador:
Uri url = Uri.parse(“http://www.google.com”);
Intent it = new Intent(Intent.ACTION_VIEW,url);
startActivity(it);
• Temos um objeto baseado na Classe URI (url) que representa o recurso
que queremos, neste caso o Site do Goolge;
• A ação Intent.ACTION_VIEW, indica que queremos que o Navegador
seja acionado (uma Activity nativa do Android). Neste caso o
navegador será aberto no endereço repassado a variável url;
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Intents nativas do Android
• Vamos analisar o código que chama uma nova Activity que é
responsável por fazer ligações:
Uri url = Uri.parse(“tel:99887766”);
Intent it = new Intent(Intent.ACTION_CALL,url);
startActivity(it);
• Temos um objeto baseado na Classe URI (url) que representa o recurso
que queremos, neste caso um número de telefone;
• A ação Intent.ACTION_CALL, indica que queremos que a Activity
responsável por fazer ligações seja acionada (uma Activity nativa do
Android). Neste caso a Activity irá ligar para o número do telefone
repassado a variável url;
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Implementação
• Ações a serem trabalhadas
•
•
•
•
•
Entender o arquivo AndroidManifest.xml;
Criar uma nova Activity;
Chamar uma Activity a partir de outra;
Passar dados de uma Activity para outra;
Usar Intents nativas do Android;
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Implementação
• Tratamento de Eventos
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
O que é uma Intent Filter
• Na seção anterior aprendemos que podemos criar uma “ação”
para acionar uma Activity;
• Mas como podemos saber qual Activity irá responder a esta
“ação”?
• Com este objetivo temos a classe android.content.IntentFilter;
• Uma IntentFilter pode ser usado para abrir uma Activity a partir
de uma ação;
• Entender a arquitetura entre uma Intent, IntentFilter e Activity
é fundamental;
• Por exemplo, quando o Sistema Operacional recebe uma
mensagem SMS, ele dispara uma Intent com a ação
android.provider.Telephony.SMS_RECEIVED, que pode ser
configurada por qualquer aplicação que deseja interceptar essa
Intent, por exemplo para ler esta mensagem;
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Configuração do <intent-filter>
•
•
•
•
Este é um trecho do arquivo AndroidManifest.xml;
Perceba a tag <activity> e <intent-filter> interno a ela;
Observe que a tag <intent-filter> tem as tags action e category;
Estas duas tags definem a ação (android.intent.MAIN) e a categoria
(android.intent.category.LAUNCHER), padrões Android;
• A ação MAIN é semelhante ao static void main(String args[]) do Java.
Marca esta Activity como inicial, sem depender de outra Activity para
iniciar. Por isso ela pode ser iniciada diretamente pelo Eclipse;
• A categoria LAUNCHER define que a aplicação será top-level e pode ser
executada pelo usuário na tela inicial.
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Ação e Categoria: como identificar uma Intent
• Ação: define o que a intent deseja realizar. Existem algumas
ações-padrão
do
Android,
como
Intent.VIEW_ACTION,
CALL_ACTION. Entretanto o desenvolvedor pode criar suas
próprias ações para serem interpretadas pelo sistema
operacional;
• Categoria: a categoria é utilizada em conjunto com a ação para
descobrir o que a intent deseja realizar. Se a categoria for
LAUNCHER_CATEGORY, a aplicação será visível na tela inicial do
emulador e será uma aplicação que o usuário poderá iniciar
clicando no ícone da aplicação. É possível definir categorias
customizadas que, em conjunto com a ação, serão utilizadas pelo
IntentFilter para interpretar a intent.
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Implementação
• Ações a serem trabalhadas
• Criar um IntentFilter;
• Configurar ação e categoria;
• Analisar o uso da ação e categoria quando mais de uma
Activity esta configurada para a ação.
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Por que criar uma ação e categoria para uma Intent?
• Se sabemos que é possível iniciar uma activity usando o nome da
classe, por que é preciso definir uma ação?
• Uma intent é uma mensagem enviada ao sistema operacional,
onde qualquer processo pode responder a esta mensagem;
• Portanto talvez, uma activity de outra aplicação seja executada,
e não exatamente a da nossa aplicação;
• Uma ação e categoria é uma forma excelente de fazer com que
aplicações em processos diferentes se comuniquem;
• Desta forma, a ação e a categoria juntas, criam um alvo
“certeiro” não gerando dúvidas no processo de comunicação;
Programação de Dispositivos Móveis – 7º Período
Intent e Intent Filter
Por que criar uma ação e categoria para uma Intent?
Activity
Programação de Dispositivos Móveis – 7º Período
Dúvidas
Página do Professor Mauro:
http://www.dai.ifma.edu.br/~mlcsilva
Programação de Dispositivos Móveis – 7º Período
Próxima Aula
• Desenvolvimento de um aplicativo básico usando o
Google Android: Interface Gráfica (Parte 1)
Programação de Dispositivos Móveis – 7º Período
Referências
• Google Android: aprenda a criar aplicações para
dispositivos móveis com o Android SDK - Ricardo
R. Lacheta, São Paulo: Novatec, 2010.
• Sites:
• http://blog.tecsinapse.com.br/post/21322036778/entendendo-asintents-do-android-parte-2
Programação de Dispositivos Móveis – 7º Período
Download