Prof. Filipe Nunes Ribeiro
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
COMPUTAÇÃO MÓVEL
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT
●Coração do Android
●Uma
Intent está em presente em todos os lugares e
representa uma mensagem da aplicação para o sistema
operacional, solicitando que algo seja realizado. Tem um
importante papel na arquitetura do
Android para
integrar diferentes aplicações.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT
●Uma
Intent representa a intenção de uma aplicação de
realizar alguma ação
–
Enviar uma mensagem para o sistema operacional
–
Abrir uma nova tela da Aplicação (startActivity)
–
Solicitar ao SO que ligue para determinado número
–
abrir o browser em um determinado endereço
–
exibir algum endereço, localização ou rota no Google Maps e
muito mais
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT
●
Navegação entre telas e envio de parâmetros
●
Este código cria uma mensagem para o sistema
operacional, cujo conteúdo é:
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT
●
Nem sempre uma Intent é recebida pela própria
aplicação que a criou.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT
●
Construtor Intent com um parâmetro String
●
Que representa uma ação
●
Pode receber qualquer valor que faça sentido para a
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT
●
Qual aplicação responderá essa mensagem?
–
A sua ou qualquer outra
–
Grande sacada do Android
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT
●
Intents nativas de Android
–
Abrir Browser
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
●
Abrindo o Browser
–
Intent.ActionView
–
No Listener do Botão
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
●
URI
(android.net.URI) – Uniform Resource Identifier representa a
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
●
ExemploAbrirBrowser.java Continuação
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
●Acabou?
●Quase
–
É preciso solicitar a permissão para utilizar a Internet na
aplicação
–
Permissões são utilizadas para controlar o acesso às
funcionalidades que podem impactar o que o usuário está
fazendo no momento e para prevenir que nada seja
executado sem a permissão do usuário.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
●
AndroidManifest.xml
–
Fora da tag <application> devem ser inseridas as
permissões necessárias.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – AÇÕES PADRÃO
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – RETORNO DE ACTIVITY
●
Como obter um retorno de uma Activity?
●
No exemplo de contatos não faz sentido se não obtemos
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
●Onde usar o retorno de uma Activity?
–
Selecionar um elemento de uma lista (contatos)
–
Quaisquer tipos de cadastros que se retorna um objeto
cadastrado
–
Etc.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
●
Aplicar o retorno de um resultado para um exemplo de
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
●
O que vamos fazer?
Tela1
Tela2
Ao clicar no botão
cadastrar novo aluno
a tela de cadastro é
aberta. Depois de
inserir o dados e clicar
em Confirmar os
dados serão
retornados para a
Activity inicial (ver
próximo slide)
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
●
O que vamos fazer?
Tela1
Dados
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
●
Passos
1 Mudança na forma de inicializar a Activity
2 Envio do retorno pela Activity chamada
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
●Nova forma de inicializar a Activity Tela2
–
Na tela 1 quando clicar no botão cadastrar aluno.
–
O segundo parâmetro é um inteiro para identificar qual tela está sendo
inicializada. Esse inteiro é importante para no momento do retorno
saber de qual tela está voltando. Por isso a criação de uma constante
(static final) como abaixo.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
●
Activity chamada (Tela2) deve enviar resultado
Construtor vazio.
Não será criada
uma nova tela e
sim enviado um
retorno à tela de
origem
RESULT_OK: inteiro que indica se
ocorreu com sucesso a execução
da tela. Caso ocorra algum
problema deve ser enviado
RESULT_CANCELED
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
●
Activity da Tela 1 deve implementar o método
onActivityResult
Inteiro passado como parâmetro na
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
●
Activity da Tela 1 deve implementar o método
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – StartActivityForResult
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT CONCLUINDO
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT CONCLUINDO
●
Exemplos de como chamar aplicações nativas
–
Solicitar ao Google Maps que faça a busca pelo nome de
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT CONCLUINDO
●
Exemplos de como chamar aplicações nativas
–
Solicitar ao Google Maps que exiba o dado de uma
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT CONCLUINDO
●
Exemplos de como chamar aplicações nativas
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT CONCLUINDO
●
Exemplos de como chamar outras aplicações
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT CONCLUINDO
●
Exemplos de como chamar outras aplicações
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – BARCODE SCANNER
●
Utilizando o Barcode Scanner para obter como retorno a
decodificação de um código de barras.
●
A sua aplicação precisa inserir o seguinte código para
chamar o BarcodeScanner
Variável inteira estática e final
declarada na aplicação.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – BARCODE SCANNER
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT – BARCODE SCANNER
●
Barcode Scanner decodifica um código de barras e
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER – BARCODE SCANNER
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENT
OBS: Os códigos apresentados anteriormente estão
disponíveis no site da disciplina
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER – BARCODE SCANNER
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
COMPUTAÇÃO MÓVEL
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●Filtro de ações que serão
“interceptadas”
●Tudo em Android é tratado como intenções certo?
●Podemos, então, criar nossas próprias aplicações para
substituir as seguintes:
–
Player
–
Browser
–
Home
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●Se o desenvolvedor deseja construir uma aplicação que
responda a uma intenção “abrir um link em um browser”
●Como fazer isso?
●Adicionar um filtro de intenção (IntentFilter) para a
intenção
ACTION_VIEW
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●
PAUSA
●
Até o momento já usamos o IntentFilter
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
Duas tags:
Action – android.intent.action.MAIN
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
Duas tags:
Action – android.intent.action.MAIN Indica que a Activity pode ser
utilizada como ponto de partida para a aplicação (similar ao método main). Se a
activity está configurada com a ação MAIN, ela pode ser iniciada diretamente.
Caso contrário será somente a partir do método startActivity(intent)
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
Duas tags:
Category – android.intent.category.LAUNCHER Categoria que indica
que a aplicação será exibida no menu de aplicações e poderá ser executada pelo
usuário na tela inicial.
Obs: ao definir a categoria (category) LAUNCHER é obrigatório definir a ação
(action) MAIN.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●Definição mais completa sobre ação e categoria de um
intentfilter
–
Ação (Action): define a ação que a Intent deseja realizar.
–
Açõespadrão
●Intent.ACTION_VIEW
●Intent.EDIT_ACTION
●Intent.CALL_ACTION
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●O desenvolvedor pode criar suas próprias Ações
–
Barcode Scanner:
●com.google.zxing.client.android.SCAN
–
OBTER_LOCALIZACAO_GPS
–
CADASTRAR_ALUNOS
–
TIRAR_FOTO
–
etc
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●Definição mais
completa sobre ação e categoria de um
intentfilter:
–
Categoria (category): a categoria é utilizada em conjunto
com a ação para descobrir o que a intent deseja realizar.
–
Ao definir uma ação é preciso que ela tenha pelo menos
uma categoria
–
Caso não se queira criar uma categoria específica podese
criar a categoria DEFAULT.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●
E se eu quiser que a minha aplicação seja inicializada
com a seguinte linha de código?
●
De maneira similar ao BarcodeScanner
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●O que é preciso fazer?
–
Acessar o arquivo manifest
–
Definir qual Activity será chamada externamente
–
Na definição da Activity escolhida se cria um intentfilter
com a ação desejada
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER – BARCODE SCANNER NO
EMULADOR
●Como usar o BarcodeScanner no emulador
●É possível?
●Não é possível testar a aplicação oficial Barcode Scanner no
emulador
●Como simular a utilização da aplicação de leitura de código de
barras?
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER – BARCODE SCANNER NO
EMULADOR
●
Para qualquer outra aplicação ser executada com a
Intent abaixo...
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●Criar uma aplicação com o mesmo IntentFilter do
Barcode Scanner
●Como fazer isso?
1 No manifest da nova aplicação inserese o seguinte
código. Não existe problema em ter mais de um intent
filter em uma Activity.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●Criar uma aplicação com o mesmo IntentFilter do
Barcode Scanner
●Como fazer isso?
2 Na Activity principal de uma nova aplicação podemos
identificar, através do Intent que a gerou, se ela foi
chamada através da Action
com.google.zxing.client.android.SCAN
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●
Instalase a aplicação no emulador
●
Agora temos uma aplicação que executa a intenção de
Escanear um código de barras
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●Pronto
●
No momento que chamarmos o BarcodeScanner
●
Ela será aberta ao invés do BarcodScanner
Observação: na figura ao lado a Intent foi
executada em um dispositivo móvel que
tinha o BarcodeScanner e a nova aplicação
criada com o Intent-Filter
com.google.zxing.cliente.android.SCAN. A
aplicação se chamava Alunos.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●No caso do emulador, se a aplicação BarcodeScanner não
estiver instalada será chamada diretamente a nova
aplicação que tem o IntentFilter (no caso a aplicação
Alunos).
●Pronto! Agora basta implementar na
aplicação desenvolvida um retorno
similar ao do BarcodeScanner
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER
●É possível criar Intent Filters para substituir aplicações
nativas do Android
–
Browser
–
Agenda de Contatos
–
Home
–
Aplicação de discagem de telefones
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER – SUBSTITUINDO A TELA
HOME
●Substituindo a tela HOME
●Ao clicar no ícone da “casinha” (Home) teremos a seguinte
Intent criada pelo Android
●Dados obtidos com o Logcat
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER SUBSTITUINDO A TELA
HOME
●
É preciso criar um IntentFilter que registre o
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
INTENTFILTER SUBSTITUINDO A TELA
HOME
●
Após instalar a aplicação no dispositivo a seguinte tela
será exibida na tela quando a tecla Home for
selecionada.
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas
REFERÊNCIAS
●
Android Developers Site
http://developer.android.com,
●