這篇來介紹如何始用程式來動態註冊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
}
來預防
沒有留言:
張貼留言