O capítulo discute o uso de intents para trocar dados entre activities no Android. Intents permitem enviar objetos entre activities, como um objeto Aluno selecionado em uma lista. O capítulo mostra como usar intents para abrir uma activity de edição preenchida com os dados do objeto, e também como usar intents implícitos para ações como ligar ou enviar SMS para um contato.
2. Instrutor
●
Programador desde 2000
●
Aluno de doutorado
●
●
●
●
Mestre em informática pelo
ICOMP/UFAM
Especialista em aplicações
WEB – FUCAPI
marcio.palheta@gmail.com
sites.google.com/site/marcio
palheta
M.Sc. Márcio Palheta
3. Agenda
●
Trocar de dados entre activities - Intents
●
Edição do aluno selecionado
●
Atualização do FormularioHelper
●
AndroidManifest.xml e suas Permissões
●
Intents implícitas:
●
Ligar para aluno Enviar SMS, Navegar no Site,
Enviar Email e Compartilhar dados em redes sociais
M.Sc. Márcio Palheta
3/59
4. Edição dos dados do aluno
●
●
●
●
●
Agora precisamos criarr a funcionalidade para alterar os
dados de um aluno
Quando usamos o click logo da ListView, a App exibe um
menu de contexto, com possíveis ações para o Aluno
No click curto, queremos que seja chamada a tela de
formulário, carregada com os dados do aluno selecionado
Mas a dúvida é: Como enviar o aluno selecionado na
ListaAlunosActivity para FormularioActivity ?
Vamos usar Intents para enviar objetos Serializáveis de
uma Activity para outra
M.Sc. Márcio Palheta
4/59
5. Passo a passo
●
Para realizar a edição de dados do Aluno, precisamos:
●
Tornar o bean Aluno “Serializável”
●
Implementar o método AlunoDAO.alterar(Aluno);
●
●
●
●
Enviar um objeto Aluno da ListaAlunosActivity para
FormularioActivity;
Carregar o formulário com os dados do Aluno; e
Veirificar se é necessário cadastrar ou alterar os dados do
Aluno;
Uuuufa. Vamos lá. :-)
M.Sc. Márcio Palheta
5/59
10. Exercício 02: AlunoDAO.alterar()
●
Valores que serão
Na classe AlunoDAO, inclua o método alterar(Aluno) o BD
enviados para
Valores dos parâmetros
da cláusula WHERE
M.Sc. Márcio Palheta
10/59
11. Exercício 02: AlunoDAO.alterar()
●
Valores que serão
Na classe AlunoDAO, inclua o método alterar(Aluno) o BD
enviados para
Valores dos parâmetros
da cláusula WHERE
Atualização dos
dados do Aluno
M.Sc. Márcio Palheta
11/59
12. Exercício 03: Transição de telas
●
Na ListaAlunosActivity, atualize o click da ListView:
M.Sc. Márcio Palheta
12/59
13. Exercício 03: Transição de telas
●
Na ListaAlunosActivity, atualize o click da ListView:
Intenção de navegar
de ListaAlunosActivity
para FormularioActivity
M.Sc. Márcio Palheta
13/59
14. Exercício 03: Transição de telas
●
Na ListaAlunosActivity, atualize o click da ListView:
Intenção de navegar
de ListaAlunosActivity
para FormularioActivity
Recupera o aluno
selecionado
M.Sc. Márcio Palheta
14/59
15. Exercício 03: Transição de telas
●
Na ListaAlunosActivity, atualize o click da ListView:
Intenção de navegar
de ListaAlunosActivity
para FormularioActivity
Recupera o aluno
selecionado
Compartilha o objeto
Aluno com a nova tela
M.Sc. Márcio Palheta
15/59
16. Exercício 03: Transição de telas
●
Na ListaAlunosActivity, atualize o click da ListView:
Intenção de navegar
de ListaAlunosActivity
para FormularioActivity
Recupera o aluno
selecionado
Compartilha o objeto
Aluno com a nova tela
Inicia a tela de
Formulário
M.Sc. Márcio Palheta
16/59
17. Exercício 04: Atualizar formulário
●
Adicione o método setAluno(Aluno) em FormularioHelper
M.Sc. Márcio Palheta
17/59
18. Exercício 04: Atualizar formulário
●
Adicione o método setAluno(Aluno) em FormularioHelper
Novo método da classe
FormularioHelper
M.Sc. Márcio Palheta
18/59
19. Exercício 04: Atualizar formulário
●
Adicione o método setAluno(Aluno) em FormularioHelper
Novo método da classe
FormularioHelper
Atualização dos campos
da tela de formulário
M.Sc. Márcio Palheta
19/59
20. Exercício 04: Atualizar formulário
●
Adicione o método setAluno(Aluno) em FormularioHelper
Novo método da classe
FormularioHelper
Atualização dos campos
da tela de formulário
Atualiza a referência
FormularioHelper.aluno
M.Sc. Márcio Palheta
20/59
21. Exercício 05: Dados na tela
●
Atualize o método FormularioActivity.onCreate():
M.Sc. Márcio Palheta
21/59
22. Exercício 05: Dados na tela
●
Atualize o método FormularioActivity.onCreate():
Recupera o objeto Aluno
enviado pela
ListaAlunosActivity
M.Sc. Márcio Palheta
22/59
23. Exercício 05: Dados na tela
●
Atualize o método FormularioActivity.onCreate():
Retorna a Intent que
chamou a Activity
Recupera o objeto Aluno
enviado pela
ListaAlunosActivity
M.Sc. Márcio Palheta
23/59
24. Exercício 05: Dados na tela
●
Atualize o método FormularioActivity.onCreate():
Recupera o objeto Aluno
enviado pela
ListaAlunosActivity
Solicita que o Helper
atualize os campos
do Formulário
M.Sc. Márcio Palheta
24/59
25. Exercício 06: Alterar ou Cadastrar?
●
Atualize o click do botão salvar da FormularioActivity
M.Sc. Márcio Palheta
25/59
26. Exercício 06: Alterar ou Cadastrar?
●
Atualize o click do botão salvar da FormularioActivity
Verifica se é necessário
Cadastrar ou Alterar
os dados do Aluno
M.Sc. Márcio Palheta
26/59
29. Tela com dados do Aluno
Rode a App
Selecione um Aluno
M.Sc. Márcio Palheta
29/59
30. Android e as Permissões de Acesso
●
Vez por outra, pode ser necessário que nossa App acesse
recursos do próprio device, como:
–
●
●
●
Câmera, Arquivos, Internet etc
Para que o acesso seja autorizado, precisamos registrar
esses interesses no AndroidManifest.xml
Vamos incluir a tag uses-permission e informar o valor
para sua propriedade android:name
Exemplo para solicitação de acesso à câmera:
<uses-permission
android:name="android.permission.CAMERA"/>
M.Sc. Márcio Palheta
30/59
31. Exercício 07: Permissões de Acesso
●
Inclua as solicitações de Acesso entre as tags:
●
<uses-sdk /> e <appication>
M.Sc. Márcio Palheta
31/59
32. Exercício 07: Permissões de Acesso
●
Inclua as solicitações de Acesso entre as tags:
●
<uses-sdk /> e <appication>
M.Sc. Márcio Palheta
32/59
33. Exercício 07: Permissões de Acesso
●
Inclua as seguintes permissões no AndroidManifest.xml:
M.Sc. Márcio Palheta
33/59
34. Intents implícitas
●
●
●
●
●
Em nossa aplicação, precisamos realizar uma chamada
telefônica para um aluno;
O Android nos oferece duas estratégias para isso:
Na 1a, podemos acessar o telefone em baixo nível e
controlar todo o ciclo de vida da chamada (o que pode não
ser uma boa ideia)
Já na 2a, podemos usar uma Intent que já sabe fazer
ligações telefônicas: Intent.ACTION_CALL
O Android oferece várias Activities prontas para acesso a
funcionalidades do device
M.Sc. Márcio Palheta
34/59
35. Exercício 08: Ações do ContextMenu
●
Altere o método onContextItemSelected da ListaAlunos:
M.Sc. Márcio Palheta
35/59
36. Exercício 08: Ações do ContextMenu
●
Altere o método onContextItemSelected da ListaAlunos:
Item que realiza uma
chamada telefônica
para o Aluno
M.Sc. Márcio Palheta
36/59
37. Exercício 08: Ações do ContextMenu
●
Altere o método onContextItemSelected da ListaAlunos:
Item que realiza uma
chamada telefônica
para o Aluno
Intent implícita
M.Sc. Márcio Palheta
37/59
38. Exercício 08: Ações do ContextMenu
●
Altere o método onContextItemSelected da ListaAlunos:
Item que realiza uma
chamada telefônica
para o Aluno
Padrão para
chamada telefônica
M.Sc. Márcio Palheta
38/59
39. Exercício 08: Ações do ContextMenu
●
Altere o método onContextItemSelected da ListaAlunos:
Item que realiza uma
chamada telefônica
para o Aluno
Iniciar Activity
implícita
M.Sc. Márcio Palheta
39/59
40. Exercício 08: Ações do ContextMenu
●
Altere o método onContextItemSelected da ListaAlunos:
Item que realiza
o envio de SMS
para o Aluno
M.Sc. Márcio Palheta
40/59
41. Exercício 08: Ações do ContextMenu
●
Altere o método onContextItemSelected da ListaAlunos:
●
Inclua opções para ver Aluno no Mapa e Navegar no site
M.Sc. Márcio Palheta
41/59
42. Exercício 08: Ações do ContextMenu
●
●
Altere o método onContextItemSelected da ListaAlunos:
Inclua opções para ver Aluno no Mapa e
Item que busca
aluno no mapa
Navegar no site
M.Sc. Márcio Palheta
42/59
43. Exercício 08: Ações do ContextMenu
●
●
Altere o método onContextItemSelected da ListaAlunos:
Inclua opções para ver Aluno no Mapa e
Item que busca
aluno no mapa
Navegar no site
Padrão para
Busca em mapa
M.Sc. Márcio Palheta
43/59
44. Exercício 08: Ações do ContextMenu
●
●
Altere o método onContextItemSelected da ListaAlunos:
Inclua opções para ver Aluno no Mapa e
Item que busca
aluno no mapa
Navegar no site
Padrão para
Busca em mapa
Ainda vamos falar
Muito sobre mapas
M.Sc. Márcio Palheta
44/59
45. Exercício 08: Ações do ContextMenu
●
Altere o método onContextItemSelected da ListaAlunos:
●
Inclua opções para ver Aluno no Mapa e Navegar no site
Item que Navega
no site do Aluno
M.Sc. Márcio Palheta
45/59
46. Exercício 08: Ações do ContextMenu
●
Altere o método onContextItemSelected da ListaAlunos:
●
Última opção: Enviar e-mail para aluno
M.Sc. Márcio Palheta
46/59
47. Exercício 08: Ações do ContextMenu
●
Altere o método onContextItemSelected da ListaAlunos:
●
Última opção: Enviar e-mail para aluno
M.Sc. Márcio Palheta
47/59
53. Teste do envio de email
Escolha a Forma
de Envio
M.Sc. Márcio Palheta
53/59
54. Teste do envio de email
Escolha a Forma
de Envio
Podem variar, de
acordo com as Apps
Instaladas no Device
M.Sc. Márcio Palheta
54/59
55. Teste do envio de email
Escolha a Forma
de Envio
Tela da App de
Envio que foi
selecionada
Podem variar, de
acordo com as Apps
Instaladas no Device
M.Sc. Márcio Palheta
55/59
56. Teste de funcionalidades
TESTE AS OUTRAS
FUNCIONALIDADES
CRIADAS EM NOSSA
APP
Esta apresentação criada quarta feira, 27/11/2013, dia em
que o MENGÃO foi TRI-CAMPEÃO da Copa do Brasil,
vencendo o Atlético-PR porMárcio Palheta
M.Sc. 2 x 0, no “Maraca” lotaaaddo.
Saudações Rubro-Negras :-)
56/59
57. O que vem a seguir?
●
Câmera
●
Arquivos
●
Recuperar resultado de Activity chamada
●
LayoutInflater
●
Serviços de background: Receber SMS e Tocar MP3
●
Integração via JSON
●
Tarefas assíncronas e Barra de progresso
●
Fragments
●
Google Maps e GPS
M.Sc. Márcio Palheta
57/59