2012年10月26日 星期五

動態註冊BroadCastReceiver

前一篇是在說明 利用AndroidMainifest去註冊BroadcastReceiver

這篇來介紹如何始用程式來動態註冊BroadcastReceiver 不需直接在AndroidMainifest寫死指定

在要註冊的程式寫下

IntentFilter message = new IntentFilter("mybroadcast");



  若要新增broadcast Receiver的話   可以利用addAction的指令   例如  
message.addAction("broadcast2"); 
  然後和上一篇一樣去實作Broadcast Receiver並extends BroadcastReceiver   然後去new出來你要註冊的地方
MyReceiver receiver = new MyReceiver(); 


並註冊偵聽broadcast

registerReceiver(receivr,message);



  若要發送broadcast的話   就下
sendBroadcast( new Intent(broadcast)); 


這樣在MyReceiver內就會收到發送的broadcast了

若要取消監聽Broadcast則下

unregisterReceiver(receiver);




注意的一點就是如果已經取消過監聽的Broadcast的註冊

又再去叫一次unregisterReceiver的話

會跳出IllegalArgumentException的error

所以我們可以使用 try catch去預防這個錯誤發生

可以下
try{
   unregisterReceiver(receiver);
}
   catch(IllegalArgumentException)
{
   Toast.makeText(MainActivity.this,"已經取消過了啦!笨蛋!", Toast.LENGTH_SHORT).show
}


來預防



沒有留言: