Capítulo 06 - Comunicação entre Activities e Intents Implícitas
-
Upload
marcio-palheta -
Category
Documents
-
view
1.559 -
download
2
description
Transcript of Capítulo 06 - Comunicação entre Activities e Intents Implícitas
Capítulo 06: Trabalhando com Intents
M.Sc. Márcio Palheta
Instrutor
● Programador desde 2000
● Aluno de doutorado
● Mestre em informática pelo ICOMP/UFAM
● Especialista em aplicações WEB – FUCAPI
● sites.google.com/site/marciopalheta
M.Sc. Márcio Palheta
3/59
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
4/59
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
5/59
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
6/59
Exercício 01: Aluno Serializável
M.Sc. Márcio Palheta
7/59
Exercício 01: Aluno Serializável
Para transitar entretelas, a classe Aluno deveimplementar Serializable
M.Sc. Márcio Palheta
8/59
Exercício 02: AlunoDAO.alterar()
● Na classe AlunoDAO, inclua o método alterar(Aluno)
M.Sc. Márcio Palheta
9/59
Exercício 02: AlunoDAO.alterar()
● Na classe AlunoDAO, inclua o método alterar(Aluno)Valores que serão
enviados para o BD
M.Sc. Márcio Palheta
10/59
Exercício 02: AlunoDAO.alterar()
● Na classe AlunoDAO, inclua o método alterar(Aluno)Valores que serão
enviados para o BD
Valores dos parâmetrosda cláusula WHERE
M.Sc. Márcio Palheta
11/59
Exercício 02: AlunoDAO.alterar()
● Na classe AlunoDAO, inclua o método alterar(Aluno)Valores que serão
enviados para o BD
Atualização dos dados do Aluno
Valores dos parâmetrosda cláusula WHERE
M.Sc. Márcio Palheta
12/59
Exercício 03: Transição de telas
● Na ListaAlunosActivity, atualize o click da ListView:
M.Sc. Márcio Palheta
13/59
Exercício 03: Transição de telas
● Na ListaAlunosActivity, atualize o click da ListView:Intenção de navegar de ListaAlunosActivitypara FormularioActivity
M.Sc. Márcio Palheta
14/59
Exercício 03: Transição de telas
● Na ListaAlunosActivity, atualize o click da ListView:Intenção de navegar de ListaAlunosActivitypara FormularioActivity
Recupera o aluno selecionado
M.Sc. Márcio Palheta
15/59
Exercício 03: Transição de telas
● Na ListaAlunosActivity, atualize o click da ListView:Intenção de navegar de ListaAlunosActivitypara FormularioActivity
Recupera o aluno selecionado
Compartilha o objeto Aluno com a nova tela
M.Sc. Márcio Palheta
16/59
Exercício 03: Transição de telas
● Na ListaAlunosActivity, atualize o click da ListView:Intenção de navegar de ListaAlunosActivitypara FormularioActivity
Recupera o aluno selecionado
Compartilha o objeto Aluno com a nova tela
Inicia a tela de Formulário
M.Sc. Márcio Palheta
17/59
Exercício 04: Atualizar formulário
● Adicione o método setAluno(Aluno) em FormularioHelper
M.Sc. Márcio Palheta
18/59
Exercício 04: Atualizar formulário
● Adicione o método setAluno(Aluno) em FormularioHelperNovo método da classe
FormularioHelper
M.Sc. Márcio Palheta
19/59
Exercício 04: Atualizar formulário
● Adicione o método setAluno(Aluno) em FormularioHelperNovo método da classe
FormularioHelper
Atualização dos camposda tela de formulário
M.Sc. Márcio Palheta
20/59
Exercício 04: Atualizar formulário
● Adicione o método setAluno(Aluno) em FormularioHelperNovo método da classe
FormularioHelper
Atualização dos camposda tela de formulário
Atualiza a referênciaFormularioHelper.aluno
M.Sc. Márcio Palheta
21/59
Exercício 05: Dados na tela
● Atualize o método FormularioActivity.onCreate():
M.Sc. Márcio Palheta
22/59
Exercício 05: Dados na tela
● Atualize o método FormularioActivity.onCreate():
Recupera o objeto Alunoenviado pela
ListaAlunosActivity
M.Sc. Márcio Palheta
23/59
Exercício 05: Dados na tela
● Atualize o método FormularioActivity.onCreate():
Recupera o objeto Alunoenviado pela
ListaAlunosActivityRetorna a Intent quechamou a Activity
M.Sc. Márcio Palheta
24/59
Exercício 05: Dados na tela
● Atualize o método FormularioActivity.onCreate():
Recupera o objeto Alunoenviado pela
ListaAlunosActivity
Solicita que o Helper atualize os campos
do Formulário
M.Sc. Márcio Palheta
25/59
Exercício 06: Alterar ou Cadastrar?
● Atualize o click do botão salvar da FormularioActivity
M.Sc. Márcio Palheta
26/59
Exercício 06: Alterar ou Cadastrar?
● Atualize o click do botão salvar da FormularioActivity
Verifica se é necessárioCadastrar ou Alteraros dados do Aluno
M.Sc. Márcio Palheta
27/59
Rode a App
M.Sc. Márcio Palheta
28/59
Rode a App
Selecione um Aluno
M.Sc. Márcio Palheta
29/59
Rode a App
Selecione um Aluno
Tela com dados do Aluno
M.Sc. Márcio Palheta
30/59
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
31/59
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
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
33/59
Exercício 07: Permissões de Acesso
● Inclua as seguintes permissões no AndroidManifest.xml:
M.Sc. Márcio Palheta
34/59
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
35/59
Exercício 08: Ações do ContextMenu
● Altere o método onContextItemSelected da ListaAlunos:
M.Sc. Márcio Palheta
36/59
Exercício 08: Ações do ContextMenu
● Altere o método onContextItemSelected da ListaAlunos:
Item que realiza umachamada telefônica
para o Aluno
M.Sc. Márcio Palheta
37/59
Exercício 08: Ações do ContextMenu
● Altere o método onContextItemSelected da ListaAlunos:
Item que realiza umachamada telefônica
para o AlunoIntent implícita
M.Sc. Márcio Palheta
38/59
Exercício 08: Ações do ContextMenu
● Altere o método onContextItemSelected da ListaAlunos:
Item que realiza umachamada telefônica
para o AlunoPadrão para
chamada telefônica
M.Sc. Márcio Palheta
39/59
Exercício 08: Ações do ContextMenu
● Altere o método onContextItemSelected da ListaAlunos:
Item que realiza umachamada telefônica
para o Aluno
Iniciar Activity implícita
M.Sc. Márcio Palheta
40/59
Exercício 08: Ações do ContextMenu
● Altere o método onContextItemSelected da ListaAlunos:
Item que realizao envio de SMS
para o Aluno
M.Sc. Márcio Palheta
41/59
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
42/59
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 buscaaluno no mapa
M.Sc. Márcio Palheta
43/59
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 buscaaluno no mapa
Padrão para Busca em mapa
M.Sc. Márcio Palheta
44/59
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 buscaaluno no mapa
Padrão para Busca em mapa
Ainda vamos falarMuito sobre mapas
M.Sc. Márcio Palheta
45/59
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
46/59
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
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
48/59
Teste do envio de email
M.Sc. Márcio Palheta
49/59
Teste do envio de email
Click LONGO
M.Sc. Márcio Palheta
50/59
Teste do envio de email
M.Sc. Márcio Palheta
51/59
Teste do envio de email
Selecione o itemEnviar E-mail
M.Sc. Márcio Palheta
52/59
Teste do envio de email
M.Sc. Márcio Palheta
53/59
Teste do envio de email
Escolha a Formade Envio
M.Sc. Márcio Palheta
54/59
Teste do envio de email
Escolha a Formade Envio
Podem variar, de acordo com as AppsInstaladas no Device
M.Sc. Márcio Palheta
55/59
Teste do envio de email
Escolha a Formade Envio
Podem variar, de acordo com as AppsInstaladas no Device
Tela da App de Envio que foiselecionada
M.Sc. Márcio Palheta
56/59
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 por 2 x 0, no “Maraca” lotaaaddo. Saudações Rubro-Negras :-)
M.Sc. Márcio Palheta
57/59
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
58/59
Referências
● www.caelum.com.br● d.android.com● LECHETA, Ricardo. Google Android, 3a edição,
Novatec, São Paulo, 2013● Código fonte completo:
https://github.com/marciopalheta/cursosandroid
Capítulo 06: Trabalhando com Intents