Interceptando SMS com BroadcastReceiver

2

Este é um tutorial muito interessante e um assunto muito utilizado hoje em dia por aplicativos. Você já deve ter percebido isso quando instalou e rodou o Whatsapp pela primeira vez, quando você digita seu número de celular e uma verificação é iniciada automaticamente. Isso nada mais é do que um SMS que chega dos servidores do Whatsapp com um código de confirmação e para que você não precise digitar este código, existe uma implementação no código do aplicativo que faz essa interceptação do SMS e valida o código.

Referência

Para este tutorial vamos criar um aplicativo para interceptar SMS recebidos de compras realizadas. Neste caso vamos utilizar o protocolo de mensagem do banco Santander que é o seguinte:

Lembrando que xxxx pode ser qualquer caractere e 0 pode ser qualquer número.

1. Mão na massa

Crie um projeto Empty Activity

Projeto Empty Activity
Agora vamos criar uma classe chamada InterceptSMS que deverá herdar a classe BroadcastReceiver, lembrando que devemos sobrescrever o método onReceive.

Agora que criamos a classe, precisamos criar a referência do Broadcast no arquivo de manifesto (AndroidManifest.xml), pois ele será responsável por capturar o evento de recebimento de SMS. No arquivo de manifesto também deveremos adicionar a permissão para ler o SMS.

OBSERVAÇÃO

Para Android com versão acima da 6.0 é necessário solicitar ao usuário a permissão em tempo de execução do aplicativo, não basta adicionar no arquivo de manifesto que não irá funcionar. Então vamos lá.

Primeiro precisamos verificar se o aplicativo já possui a permissão habilitada e faremos isso na inicialização do aplicativo, dentro do método onCreate.

Existe um método chamado onRequestPermissionsResult que podemos sobrescrevê-lo para saber se o usuário aceitou ou não a permissão.

Permissão
Pronto, temos o aplicativo preparado para receber o SMS e só nos resta criar uma forma de obter as informações necessárias da mensagem. Para isso vamos criar uma string padrão no arquivo de Strings do aplicativo. Vamos considerar que toda informação seja uma String.

Para finalizar, vamos criar a lógica para interpretar a mensagem e obter as informações necessárias, para isso vamos criar o código dentro do método onReceive da classe InterceptSMS.

2. Simulando o Envio de SMS

Para não ficar gastando créditos em seu celular, vamos rodar esse aplicativo no emulador e com ele vamos realizar o teste.

Caso ainda não esteja familiarizado sobre como rodar o emulador, clique em Tools->Android->AVD Manager e crie e rode seu emulador.

Emulador
Clique nos três pontos ao lado do emulador para abri a tela de configurações do emulador.

Configurações Emulador
Selecione Phone, digite a mensagem {xxxx}Santander Informa: Transacao Maestro cartao final 0000 de R$ 00,00 aprovada em 00/00/00 as 00:00 XXX YYY ZZZ e clique no botão SEND MESSAGE para enviar o sms.

3. Código completo

Código Fonte

Clique aqui para baixar o projeto completo.

Qualquer dúvida deixe seu comentário.

Share.

About Author

gorio

Engenheiro de Computação, com 6 anos de experiência e vivência no mundo de Sistemas Embarcados e Mobile.

2 Comentários

  1. Estou impressionado!
    Meu amigo, muito obrigado, estou procurando aprender programar para mobile e sinto muita falta de conteúdo em português para estudar.

    Sua pagina, esta salva com atalho no meu desktop!

    Vou ser seu leitor freneticamente dedicado!

    Espero mais conteúdo!

Leave A Reply

*