Android4開發入門經典 之 第六部分:Broadcast【私塾線上原創】

xinqing010發表於2012-03-01

Broadcast基本概念

Broadcast是什麼

是一種能在各個應用程式之間傳遞資料的機制。類似於現實中的廣播體系,有廣播方和接收方,雙方的關係是多對多的,之間傳遞的就是Intent物件。
 

Broadcast能做什麼

1:實現了不同的程式之間的資料傳輸與共享,比如我們的應用想要攔截到簡訊或電話,就可以接收相應的廣播,然後進行處理。
2:起到了一個通知的作用,比如在service中要通知主程式,更新主程式的UI等。

Broadcast有什麼

1:廣播方,就是發出廣播的應用
2:接收方,就是接收相應的廣播資訊並處理的應用
3:Intent物件,廣播方和接收方傳遞資料的物件。
 

Broadcast Receiver示例

在廣播方需要做兩件事情:一是組織並封裝Intent物件;二是傳送廣播。如下:


java程式碼:
Intent in = new Intent();
in.setAction(Intent.ACTION_EDIT);
in.putExtra("broadcast", "test");
HelloWorldActivity.this.sendBroadcast(in);
n在接收方需要繼承BroadcastReceiver並做廣播的相應處理
public class MyReceiver  extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_EDIT)){
Toast.makeText(context, "receiver-"+intent.getExtras().getString("broadcast"),Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "receiver-but not edit",Toast.LENGTH_SHORT).show();
}
}
}

需要在配置檔案AndroidManifest.xml中,在activity後,在application之前,註冊receiver,同時配置intent-filter,示例如下:


java程式碼:




注意:使用這種方式註冊的監聽器,無論這個應用是否執行,都能夠接收到相應的廣播訊息。

也可以通過程式來動態的註冊receiver,同時配置intent-filter,這樣就不需要在配置檔案中配置了,示例如下:


java程式碼:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_EDIT);
HelloWorldActivity.this.registerReceiver(new MyReceiver(), intentFilter);
要記得在發出廣播前註冊。
可以使用unregisterReceiver方法來取消註冊。

接收簡訊示例

可以使用Broadcast Receiver來接收簡訊,示例如下:


java程式碼:
1:在AndroidManifest.xml中要註冊許可權:

2:在MyReceiver上設定IntentFilter

3:在MyReceiver裡面進行簡訊解析
Bundle b = intent.getExtras();
Object[] bjs = (Object[])b.get("pdus");
SmsMessage [] ms = new SmsMessage[objs.length];
 
for(int i=0;i

Broadcast Receiver開發建議

Broadcast Receiver 的生命週期

Broadcast Receiver物件只在執行onReceive方法期間是有效的,每次執行完成,都會被銷燬掉,下次接收廣播的時候,又會重新建立Receiver物件。

系統內建的Broadcast Receiver可以接收的事件

可以在文件中Intent物件中查詢,裡面有一個“Standard Broadcast Actions”,這裡面的就是可以在Broadcast中使用的。
要確保Intent的名稱空間和類名是獨有的,不會和其他應用的衝突
如果不希望其他的應用傳送的廣播被你的Receiver接收到,可以在Receiver上配置android:exported="false"
 


視訊配套PPT,視訊地址【 Android4開發入門經典獨家視訊課程

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26715458/viewspace-717429/,如需轉載,請註明出處,否則將追究法律責任。

相關文章