廣播接收器(Broadcast Receiver) 是Android組件 也是用來實現IPC(Interprocess Communictaion)
它允許不同APP 之間的通訊透過發送intent與接收intent 並且廣播的 Intent 可以來自三個來源:Android 系統(例如系統事件)、其他APP,或本身APP
Broadcast Receiver 需要繼承 BroadcastReceiver classes 並透過 onReceiver() 來處理介收到intent 並且Receiver 會在AndroidManifest.xml 中的 intent Filter 來匹配特定intent.
Receiver 範例程式
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action != null) {
switch (action) {
case Intent.ACTION_POWER_CONNECTED:
// Handle the power connected event
break;
case Intent.ACTION_POWER_DISCONNECTED:
// Handle the power disconnected event
break;
default:
// Handle other actions as needed
break;
}
}
}
}
定義intent filter 避免收到不相干的intent
<manifest ...>
<application ...>
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
</application>
</manifest>
廣播的方法
sendOrderedBroadcast(Intent, String) 一次將廣播發送給一個接收器。
sendBroadcast(intent) 以未定義的順序將廣播發送給所有接收器
從 Android 8.0 開始,大多數隱式廣播(不特定針對某個應用程式的廣播,例如 ACTION_POWER_CONNECTED)無法在 AndroidManifest.xml 中聲明接收器 防止應用程式在背景無限制地監聽廣播 但是有些隱式廣播是例外 還是能被宣告接收器而監聽到