iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0

廣播接收器(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 中聲明接收器 防止應用程式在背景無限制地監聽廣播 但是有些隱式廣播是例外 還是能被宣告接收器而監聽到


上一篇
Day 13 Services
系列文
我是不可能一直學Android 絕對不會14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言