O Assunto é Notificação, Notification para os íntimos!
Dispositivos móveis são modernos e rápidos, muitos possuem a capacidade de rodar jogos com resoluções altíssimas, na grande maioria das vezes é por isso compramos. É neste cenário que entram as notificações, naqueles momentos em que estamos aficcionados em uma corrida, procurando bater o record com o melhor tempo, que vibrar o celular e o seu record foi pelos ares, uma mensagem chegou e a tela do jogo foi colocada em segundo plano, ficando a tela da caixa de entrada de mensagens em evidência.
O android soluciona este exemplo de forma simples e inteligente, ao invés de tomar conta da tela simplemente notifica ao usuário que algum evento aconteceu.
Vamos deixar os jogos de lado por alguns instantes e visualizar o exemplo abaixo:
A imagem acima demonstra um usuário navegando na internet e uma notificação de recebimento de mensagem. O usuário optará por interromper a sua navegação e ler a mensagem, arrastando a barra de notificações para baixo, ou continuar e deixar para ler depois.
Neste exemplo, caso o usuário queira visualizar a mensagem será necessário clicar sobre a notificação para que uma tela (activity) de leitura de mensagens seja visualizada. O android possui um aplicativo para a leitura e gerenciamento de mensagens, uma activity como todas as outras.
Nesta tela podemos observar o número do remetente da mensagem, a mensagem, uma caixa de texto para respondermos e um botão enviar. Uma tela simples, uma activity simples.
Notificações na prática
Bem, ate agora apenas exemplifiquei o que é uma notificação, mas ainda não falei como notificar, o que é necessário, quando acontece e como programar. Para isso usarei um exemplo simples, uma receiver que conterá uma action, (mais sobre action) que ao perceber que o celular recebeu uma mensagem irá notificar o usuário.
Os passos serão:
1 – Criar um receiver que será responsável por tratar o evento de recebimento da mensagem.
2 – Acessar o gerenciador de notificações e criar a notificação
3 – Criar uma activity que será chamando quando o usuário clicar sobre a notificação.
Criar o receiver para tratar eventos de mensagem
Assumindo que o projeto esta criado, exemplo.
Primeiramente iremos criar um Broadcast Receiver (assunto para outro post) que será chamado assim que o android perceber que uma mensagem chegou ao dispositivo.
Um broadcast trabalhar em segundo plano, não possui tela e é responsável por filtar intenções, como chamadas telefônicas, recebimento de mensagens ou qualquer outra ação definida. Para ter um Broadcast basta estender de android.content.BroadcastReceiver e declarar um <receiver> no AndroidManifest.xml.
Onde:
1 – Declaração do receiver. Observe que a action android.provider.Telephony.SMS_RECEIVED foi adicionada para filtrar as mensagens recebidas no dispositivo.
2 – Sinaliza que a aplicação precisa de permissão para receber as mensagens.
Neste ponto a aplicação está configurada para interceptar as mensagens e para testar, utilizarei a perspectiva DDMS do plugin ADT instalado no eclipse.
1 – Emulador que será utilizado para enviar a mensagem. Observe a porta do emulador.
2 – Identifica a porta do emulador.
3 – Informações da mensagem, telefone do remetente, tipo de chamada e mensagem.
Ao enviar a mensagem o receiver receberá a intenção e mostrará a mensagem na tela.
Acessar o gerenciador de notificações e criar a notificação
Criar uma activity que será chamando quando o usuário clicar sobre a notificação
Ao executar a aplicação novamente e simular o envio de SMS a tela abaixo será apresentada:
Na maioria das vezes as notificações são utilizadas por processos que rodam em segundo plano, que buscam realmente informar ao usuário sobre algum evento, mas que não podem atrapalhar.
Bem, é isso, notifique-me sobre algum evento.
Ate a próxima.
Arquivado em: Android, Api, Tutorial Etiquetado: | activity, android, android manifest, BroadcastReceiver, filter, intent filter, notification










Olá, Ythalo! Ótimo post!
Você saberia indicar em que momento o identificadorSMS será criado no arquivo R? Pergunto isso porque não consigo testar corretamente o exemplo do post por não reconhecer esse identificador.
Obrigado e abraço!
Olá Iális,
Este valor esta setado no arquivo res/strings.xml do projeto.
Tratei esta informação com um recurso, desta forma o R.string.identificadorSMS esta setado no arquivo strings.xml da pasta /res.
Atenciosamente.
como apagar as mensagens que estão contida na notificação mais não tem como ler pois foram apagadas?