Introdução a BroadcastReceiver


Nesse capitulo nos iremos conhecer um pouco sobre o que é o BroadcastReceiver do android.

Os BroadCastReceiver são componentes responsaveis por receber e tratar eventos do sistema ou de outras aplicações, como por exemplo executar determinada aplicação ou determinada tarefa ao receber um SMS, receber uma ligação e etc.

Essa classe BroadcastReceiver permite que nossa app mesmo fechada continue executando tarefas em background no device do usuario. Para utilizar a classe BroadcastReceiver existe algumas regras como por exemplo, nos não podemos executar tarefas que demorem mais de 10 segundos, não podemos abrir threads e conexões com a internet dentro do nosso broadcast, se o sistema android perceber que o nosso broadcast esta realizando algumas dessas atividades acima ele ira matar o nosso processo na hora. Alguns dos exemplos de BroadCasts que podemos incluir na nossa aplicação são.

Uma das principais funções do BroadCastReceiver como ele so permite tarefas de ate 10 segundos é chamar uma classe chamada Service que pode executar ações longas nos iremos ver essa classe no proximo capitulo.

Evento Descrição
android.intent.action.ACTION_BOOT_COMPLETED Indica que o telefone acabou de ser ligado
android.intent.action.ACTION_POWER_CONNECTED Indica que o carregador foi conectado
android.intent.action.ACTION_BATERY_LOW Indica que o nivel da bateria esta baixo

Vamos agora criar um novo projeto para utilizarmos o BroadcastReceiver, nos iremos criar um projeto que ao iniciar o telefone a nossa aplicação sera aberta, ao clicar em um button nos iremos iniciar algum serviço nosso, e ao clicar em outro button nos iremos verificar se o device do usuario esta com acesso a internet, se tiver nos iremos executar alguma ação.

Vamos ao nosso arquivo activity_main.xml e vamos adicionar dois buttons a nossa tela, o primeiro button sera responsavel por abrir o broadcastReceiver que executara alguma ação nossa, e o segundo button sera responsavel por verificar a conexão com a internet e executar alguma ação.

Agora vamos fazer as referencias dos itens do nosso layout a nossa activity.

Agora vamos criar a nossa classe que sera responsavel por nossas ações do broadcastReceiver, a nossa classe que vai realizar a ação de broadcastReceiver ela herda de uma classe chamada BroadcastReceiver, ao criar a nossa classe ela nos obriga a implementar um metodo chamado onReceiver(), esse metodo é responsavel por executar a ação do nosso broadcast.

O Primeiro broadcast que iremos fazer é para abrir a nossa aplicação assim que o nosso device ligar, para implementar essa função na nossa classe MeuBroadcast no metodo onReceiver() nos iremos colocar o seguinte codigo.

Nessa linha estamos capturando a acão que esta chamando o nosso Broadcast.

        String acao = intent.getAction();

Nessa linha estamos verificando a ação chamada, se for a ação de BOOT_COMPLETED nos iremos iniciar a nossa aplicação chamando uma determinada tela.

        if (Intent.ACTION_BOOT_COMPLETED.equals(acao)) {

Agora nos temos que registrar o nosso BroadcastReceiver no nosso arquivo AndroidManifest.xml. Com a tag <receiver> nos declaramos o nosso broadcast atraves da tag android:name, atraves da tag <intent-filter> nos iremos colocar as intents que o nosso broadcast tratara, nesse caso iremos colocar o seu action como android.intent.action.RECEIVE_BOOT_COMPLETED que informa que quando essa ação for disparada o nosso broadcast sera ativado.

Nos temos que adicionar no projeto a permissão para a nossa aplicação realizar tal função.

Agora vamos iniciar a nossa aplicação e verificar o que acontece ao desligar e ligar o nosso telefone.


Agora vamos implementar o nosso segundo BroadCast, agora iremos implementar o broadcast do primeiro button, esse sera um broadcast customizado que sera utilizando para executar algum evento na nossa aplicação, nos iremos adicionar mais um intent-filter no nosso arquivo AndroidManifest.xml, esse action sera o responsavel por informar ao broadcast que estamos executando a nossa ação personalizada.

Existe algumas regras parar criar uma action personaliza, o nome da action tem que ser o nome do pacote da aplicação seguido do nome da nossa ação com a letra maiuscula.

Agora vamos voltar ao nosso arquivo MainActivity e vamos adicionar uma variavel que receberar o mesmo nome da nossa action que criamos no AndroidManifest.xml, e no evento do nosso button1 vamos criar uma intent que sera responsavel por avisar que estavamos executando determinada ação e enviar ela para o nosso broadcast atraves do metodo chamado sendBroadcast();

Agora vamos executar a nossa aplicação, ao clicar no button1 deve aparece um toast informando a ação que foi executada.


Agora vamos criar o nosso terceiro broadcast que vai ser acionado ao clicar no nosso button2, esse broadcast ira verificar a conexão com a internet.

Nos iremos agora criar uma instancia da nossa classe MeuBroadcast e no onClick do button2 iremos criar uma um objeto do tipo IntentFilter, esse objeto sera o responsavel por enviar ao nosso broadcast que queremos verificar a conexão com a internet, esse objeto IntentFilter recebe como parametro a action que iremos executar e nesse caso iremos executar a action de verificar a conexão com a internet. Apos criar o IntentFilter nos registramos o nosso broadcast para receber essa ação de verificar a conexão com a internet atraves do metodo registerReceiver(). Nos iremos tambem sobreescrever o metodo onPause, no metodo onPause nos iremos desregistrar o nosso broadcast atraves do metodo unRegisterReceiver().

Agora vamos ate o nosso arquivo AndroidManifest.xml e vamos adicionar duas permissões novas, a primeira

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

informa ao usuario que iremos verificar o seu status de conexão, e a segunda

    <uses-permission android:name="android.permission.INTERNET"/>

informa ao usuario que iremos utilizar internet na nossa aplicação.

Agora nos iremos realizar uma pequena alteração na nossa classe MeuBroadcast, nos iremos colocar a validação para saber se a ação que ta sendo executada é a de verificar a internet, se for, nos iremos capturar o estado da internet se ele esta conectado ou não, com esse estado nos iremos mostrar um toast para o usuario informando a situação de conexão dele.

Agora vamos executar a nossa aplicação e vamos clicar no button2 e verificar como a nossa aplicação ira reagir ao evento de desconectado e conectado a internet.

Ao clicar no nosso button2 o nosso broadcast ja vai começar a ficar escutando a conexão do device do usuario.

Caso eu ative a internet agora ele ira informar que existe conexão com internet.

results matching ""

    No results matching ""