capítulo 06 - comunicação entre activities e intents implícitas

59
Capítulo 06: Trabalhando com Intents

Upload: marcio-palheta

Post on 18-Dec-2014

1.559 views

Category:

Documents


2 download

DESCRIPTION

Neste capítulo discutimos: 1. como trocar de objetos java entre activities, usando Intents; 2. Edição do aluno selecionado - carregar os dados no formulário de cadastro; 3. Carga de campos baseadas em Helper; 4. O que temos no AndroidManifest.xml; 5. Solicitações de Permissões de acesso; 6. Apresentação das Intents implícitas; 7. Ligar para aluno, Enviar SMS, Navegar no Site, Enviar Email, visualizar aluno no mapa

TRANSCRIPT

Page 1: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

Capítulo 06: Trabalhando com Intents

Page 2: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

[email protected]

● sites.google.com/site/marciopalheta

Page 3: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 4: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 5: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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á. :-)

Page 6: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

6/59

Exercício 01: Aluno Serializável

Page 7: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

7/59

Exercício 01: Aluno Serializável

Para transitar entretelas, a classe Aluno deveimplementar Serializable

Page 8: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

8/59

Exercício 02: AlunoDAO.alterar()

● Na classe AlunoDAO, inclua o método alterar(Aluno)

Page 9: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 10: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 11: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 12: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

12/59

Exercício 03: Transição de telas

● Na ListaAlunosActivity, atualize o click da ListView:

Page 13: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 14: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 15: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 16: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 17: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

17/59

Exercício 04: Atualizar formulário

● Adicione o método setAluno(Aluno) em FormularioHelper

Page 18: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 19: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 20: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 21: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

21/59

Exercício 05: Dados na tela

● Atualize o método FormularioActivity.onCreate():

Page 22: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 23: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 24: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 25: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

25/59

Exercício 06: Alterar ou Cadastrar?

● Atualize o click do botão salvar da FormularioActivity

Page 26: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 27: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

27/59

Rode a App

Page 28: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

28/59

Rode a App

Selecione um Aluno

Page 29: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

29/59

Rode a App

Selecione um Aluno

Tela com dados do Aluno

Page 30: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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"/>

Page 31: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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>

Page 32: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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>

Page 33: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

33/59

Exercício 07: Permissões de Acesso

● Inclua as seguintes permissões no AndroidManifest.xml:

Page 34: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 35: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

35/59

Exercício 08: Ações do ContextMenu

● Altere o método onContextItemSelected da ListaAlunos:

Page 36: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 37: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 38: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 39: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 40: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 41: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 42: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 43: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 44: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 45: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 46: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 47: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 48: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

48/59

Teste do envio de email

Page 49: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

49/59

Teste do envio de email

Click LONGO

Page 50: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

50/59

Teste do envio de email

Page 51: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

51/59

Teste do envio de email

Selecione o itemEnviar E-mail

Page 52: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

52/59

Teste do envio de email

Page 53: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

M.Sc. Márcio Palheta

53/59

Teste do envio de email

Escolha a Formade Envio

Page 54: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 55: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 56: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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 :-)

Page 57: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 58: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

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

Page 59: Capítulo 06 - Comunicação entre Activities e Intents Implícitas

Capítulo 06: Trabalhando com Intents