private ReceiveBroadCast receiveBroadCast; //廣播實例 public class RegisteLinster implements OnClickListener { @Override public void onClick(View view) { // 註冊廣播接收 receiveBroadCast = new ReceiveBroadCast(); IntentFilter filter = new IntentFilter(); filter.addAction(flag); //只有持有相同的action的接受者才能接收此廣播 registerReceiver(receiveBroadCast, filter); } } public class ReceiveBroadCast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //獲得廣播中獲得的數據,並顯示出來 String message = intent.getStringExtra("data"); txtShow.setText(message); } } 首先咱們實現了一個ReceiveBroadCast 類,它繼承了BroadcastReceiver並實現了其中的onReceive方法,這樣當這個廣播被接收的時候就會執行這個方法。注意咱們在註冊廣播的時候使用了filter.addAction方法添加了一個過濾器。若是沒有這一句,就至關於廣播電臺沒有告訴我們收音機用戶接收的頻率,就很差收聽這個廣播了。 再來看看如何取消註冊,是的程序再也不接收這個類型的廣播了。 1 2 3 4 5 6 7 8 9 public class UnregisteLinster implements OnClickListener { @Override public void onClick(View arg0) { unregisterReceiver(receiveBroadCast); } } 怎麼樣?是否是超級簡單的啊,就是將咱們上面的那個廣播類的實例傳進去就好了。如今註冊,取消註冊都好了,就剩下如何發送了。看代碼: 1 2 3 4 5 6 7 8 9 10 11 public class SendBroadCastListener implements OnClickListener { @Override public void onClick(View arg0) { Intent intent = new Intent(); //Itent就是咱們要發送的內容 intent.putExtra("data", "this is data from broadcast "+Calendar.getInstance().get(Calendar.SECOND)); intent.setAction(flag); //設置你這個廣播的action,只有和這個action同樣的接受者才能接受者才能接收廣播 sendBroadcast(intent); //發送廣播 } }
動態註冊方式java
咱們在程序中設置了三個按鈕,分別是「註冊廣播」,「取消註冊」和「發送廣播」。而後每一個按鈕設置點擊事件來完成廣播的演示。ide
最簡單的項目的創建過程和按鈕事件的創建我再這裏就不羅嗦了,不會的能夠下載下面的DEMO源碼查看。直接看三個按鈕的實現方式。this
首先是註冊廣播的按鈕事件代碼:spa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
private
ReceiveBroadCast receiveBroadCast;
//廣播實例
public
class
RegisteLinster implements OnClickListener
{
@Override
public
void
onClick(View view)
{
// 註冊廣播接收
receiveBroadCast =
new
ReceiveBroadCast();
IntentFilter filter =
new
IntentFilter();
filter.addAction(flag);
//只有持有相同的action的接受者才能接收此廣播
registerReceiver(receiveBroadCast, filter);
}
}
public
class
ReceiveBroadCast extends BroadcastReceiver
{
@Override
public
void
onReceive(Context context, Intent intent)
{
//獲得廣播中獲得的數據,並顯示出來
String message = intent.getStringExtra(
"data"
);
txtShow.setText(message);
}
}
|
首先咱們實現了一個ReceiveBroadCast 類,它繼承了BroadcastReceiver並實現了其中的onReceive方法,這樣當這個廣播被接收的時候就會執行這個方法。注意咱們在註冊廣播的時候使用了filter.addAction方法添加了一個過濾器。若是沒有這一句,就至關於廣播電臺沒有告訴我們收音機用戶接收的頻率,就很差收聽這個廣播了。code
再來看看如何取消註冊,是的程序再也不接收這個類型的廣播了。blog
1
2
3
4
5
6
7
8
9
|
public
class
UnregisteLinster implements OnClickListener
{
@Override
public
void
onClick(View arg0)
{
unregisterReceiver(receiveBroadCast);
}
}
|
怎麼樣?是否是超級簡單的啊,就是將咱們上面的那個廣播類的實例傳進去就好了。如今註冊,取消註冊都好了,就剩下如何發送了。看代碼:繼承
1
2
3
4
5
6
7
8
9
10
11
|
public
class
SendBroadCastListener implements OnClickListener
{
@Override
public
void
onClick(View arg0)
{
Intent intent =
new
Intent();
//Itent就是咱們要發送的內容
intent.putExtra(
"data"
,
"this is data from broadcast "
+Calendar.getInstance().
get
(Calendar.SECOND));
intent.setAction(flag);
//設置你這個廣播的action,只有和這個action同樣的接受者才能接受者才能接收廣播
sendBroadcast(intent);
//發送廣播
}
}
|