BroadcastReceiver—使用(II)

廣播接收者( BroadcastReceiver )用於接收廣播 Intent ,廣播 Intent 的發送是經過調用 Context.sendBroadcast() 、 Context.sendOrderedBroadcast() 來實現的。一般一個廣播 Intent 能夠被訂閱了此 Intent 的多個廣播接收者所接收。

  廣播是一種普遍運用的在應用程序之間傳輸信息的機制 。而 BroadcastReceiver 是對發送出來的廣播進行過濾接收並響應的一類組件;

  來自普通應用程序,如一個應用程序通知其餘應用程序某些數據已經下載完畢。

  BroadcastReceiver 自身並不實現圖形用戶界面,可是當它收到某個通知後, BroadcastReceiver 能夠啓動 Activity 做爲響應,或者經過 NotificationMananger 提醒用戶,或者啓動 Service 等等。

  BroadCastReceiver 的機制java

1. 機制

android

  在 Android 裏面有各類各樣的廣播,好比電池的使用狀態,電話的接收和短信的接收都會產生一個廣播,應用程序開發者也能夠監聽這些廣播並作出程序邏輯的處理。web

   2. 實現

  用接收短信舉例:
  第一種方式 :
  實現
public class MyBroadcastReceiver extends BroadcastReceiver {

// action 名稱
String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED" ;


public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals( SMS_RECEIVED )) {
// 相關處理 : 地域變換、電量不足、來電來信;

}
}
}

系統註冊:在 AndroidManifest.xml 中註冊ide

< receiver android:name = ".MyBroadcastReceiver" >
< intent-filter android:priority = "1000" >
< action android:name = " android.provider.Telephony.SMS_RECEIVED" />

   固然了須要權限 :spa

< uses-permission android:name = "android.permission.RECEIVE_SMS" />
< uses-permission android:name = "android.permission.SEND_SMS" />

      第二種方式:

  // 廣播接收者 - 廣播的接收code

private BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
// 相關處理,如收短信,監聽電量變化信息
}
};

  代碼中註冊:orm

IntentFilter intentFilter = new IntentFilter( "android.provider.Telephony.SMS_RECEIVED " );
registerReceiver( mBatteryInfoReceiver , intentFilter);
相關文章
相關標籤/搜索