Android學習筆記 - 廣播篇 (Broadcast)

1.Android的廣播機制介紹
 當Android系統接收到一個事件後(如電話響、收到短信),觸發事件並能手廣播
 
2.BroadcastReceiver的作用
 對有註冊廣播接收的程序進行廣播,通知其它感興趣的程序
 
3.BroadcastReceiver的編寫方法
 1.在AndroidManifest.xml中註冊事件:

	<receiver android:name=".TestReceiver">
		<intent-filter>
			<action android:name="android.intent.action.EDIT" />
		</intent-filter>
	</receiver>

 2.創建一個類,繼承於BroadcastReceiver,用於接收廣播

	public class BCReceiver extends BroadcastReceiver{
		public void BCReceiver(){
		}
		@Override
		public void onReceive(Context context, Intent intent){
			System.out.println("receive a broadcast");
		}
	}


 
 3.編寫一個類,用於發送廣播(測試用)

	Intent intent = new Intent();
	intent.setAction(Intent.ACTION_EDIT);
	CPActivity.this.sendBoardcase(intent);

4.BroadcastReceiver的生命週期
 在Android系統接收到一個廣播時,會查找符合的廣播程序
 如果符合intent-filter的話,則會創建一個廣播接收類
 廣播接收類在觸發onReceive方法後,就會被銷燬,下次重新創建

 

5.註冊BroadcastReceiver的方法
 BroadcastReceiver用於監聽被廣播的事件,爲了達到這個目的,BroadcastReceiver必須進行註冊,註冊的方法:
 1.在應用程序的代碼當中進行註冊
 2.在AndroidManifest.xml當中進行註冊(上節已介紹)
 兩者區別:註冊在xml文件中的話,即使程序被關閉了,也會接收到廣播
 
 代碼綁定廣、解除綁定播接收方法:

	//代碼綁定廣播接收方法:
	SmsReceiver smsReceiver = new SmsReceiver(); //創建監聽類
	IntentFilter filter = new IntentFilter(); //創建過濾器
	filter.addAction("android.provider.Telephony.SMS_RECEIVED"); //向過濾器添加動作
	BCActivity.this.registerReceiver(smsReceiver,filter); //註冊廣播
	
	//代碼解除綁定廣播接收方法:
	BCActivity.this.unregisiterReceiver(smsReceiver);

 在模擬器中發送短消息:
 DDMS - Emulator Control - SMS中,填寫號碼和內容,點擊“Send”按鈕

 接收廣播後的相關處理:

	public void onReceive(Context context, Intent intent){
		Bundle bundle = intent.getExtras(); //接收Intent對象中的數據
		Object[] obj = (Object[])bundle.get("pdus"); //
		SmsMessage[] messages = new SmsMessage[obj.length]; //創建短消息類型數組
		for(int i=0; i<obj.length; i++){
			messages[i] = SmsMessage.createFromPdu((byte[]obj[i]); //獲取一條短信
			System.out.println(messages[i].getDisplayMessageBody()); //打印消息體
		}
	}


 
6.Android內置的BroadcastReceiver
 在幫助文檔中的Intent類頁面中,找到常量中有“Broadcast Action”的相關ACTION
 ACTION_CAMERA_BUTTON //照相按鈕被點擊
 ACTION_BATTERY_LOW //電池低電
 ACTION_DATE_CHANGED //
 ACTION_POWER_CONNECTIED //連接USB充電
 ACTION_REBO0OT //重啓系統
 ACTION_SCREEN_ON //屏幕被打開

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章