Broadcast Receiver
Permite que aplicações possam reagir a determinado evento gerado por uma intenção (Intent) que nada mais é que uma mensagem (Message-Passing) enviada ao SO. App1 App Client Intent App2 App3
Características Broadcast Receiver Não contém interface gráfica; Executada em segundo plano; Receber uma mensagem e processá-la sem que o usuário perceba; Integra aplicações.
Tarefas Broadcast Receiver Atualizar Conteúdos; Rodar Serviços; Atualizar Activity UI; Notificar Usuários através de Notifications;
Uso de Broadcast Receiver SMS; Ligação Telefônica; SO conclui inicialização/término; Conexão com a Internet está disponível; Alarmes.
A classe android.content.broadcastreceiver public abstract void onreceive (Context context, Intent intent);
public class MyBroadcast extends BroadcastReceiver{ @Override public void onreceive(context context, Intent intent) { Toast.makeText(context, event received", Toast.LENGTH_SHORT).show(); BroadcastReceiver Project } } MyBroadcast.java
BroadCastReceiver e AndroidManifest <receiver android:name=.mybroadcast" > <intent-filter> <action android:name= EXECUTE_ACTION_TESTE" /> <category android:name="android.intent.category.default" /> </intent-filter> </receiver> AndroidManifest.xml
Dessa forma, qualquer aplicação que enviar um Broadcast com a ação EXECUTE_ACTION_TESTE o Broadcast Receiver da sua aplicação irá ser executado. sendbroadcast(new Intent("EXECUTE_ACTION_TESTE")); DisparaBroadcastActivity.java DisparaBroadcast Project
Intent-Filter: Activity x Broadcast Reciever Activities são disparadas pelo método startactivity(intent), Broacasts pelo método sendbroadcast(intent); Activities e Broadcasts registram um filtro através de um Intent- Filter, porém com funções diferentes; Activities tem objetivo de exibir uma tela ao usuário através de uma View; Broadcasts são utilizados para executar um processamento em segundo plano; Broadcasts geralmente são usados para disparar eventos vindos do SO do Android; A duração da execução do OnReceiver deve ser rápida e não deve exibir alertas.
Broadcast Receiver estático e dinâmico Configurado no Android Manifest; Registrado dinamicamente através do método: registerreceiver(intentreceiver receiver, IntentFilter filtro);
Registrando Dinamicamente IntentFilter filter = new IntentFilter( ABRIR_RECEIVER_2 ); registerreceiver(new OtherBroadcast(),filter); Desregistrando unregisterreceiver(receiver);
Ciclo de Vida Broadcast Receiver Sobrevivência apenas enquanto o método onreceiver() está sendo executado; Caso demore mais de 5 segundos o Android dispará um erro de ANR (Application Not Responding).
Broadcasts Nativos ACTION_TIME_CHANGED ACTION_TIMEZONE_CHANGED ACTION_BOOT_COMPLETED ACTION_POWER_CONNECTED ACTION_POWER_DISCONNECTED ACTION_SHUTDOWN http://developer.android.com/reference/android/content/intent.html
Exemplo de Broadcast Nativo ACTION_BOOT_COMPLETED <receiver android:name=".bootbroadcast" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.boot_completed" /> <category android:name="android.intent.category.default" /> </intent-filter> </receiver> public class BootBroadcast extends BroadcastReceiver
Funcionou?
Permissões Mecanismo de segurança a nível de aplicação que restringe o acesso de uma aplicação a recursos. Aplicações maliciosas; Fazer uso excessivo de recursos (não autorizado); Acesso a informações restritas. Exemplos: Acesso boot load do SO; Envio excessivo de SMS; Publicação de Informações em Redes Sociais.
Um aplicativo deve declarar suas necessidades (permissões) no Android Manifest.xml. <uses-permission> <uses-permission android:name="android.permission.receive_boot_completed"/> <uses-permission android:name="android.permission.receive_sms"/> <uses-permission android:name="android.permission.send_sms"/> <uses-permission android:name="android.permission.read_phone_state"/> android.permission.call_phone android.permission.internet android.permission.reboot