0
我有從AlarmManager收到重複報警清單註冊的廣播接收器,我想通知服務時收到警報,我在思考一個監聽器設置爲廣播接收器,並調用這樣的監聽器:清單註冊的BroadcastReceiver如何與其他對象交互?
public class HeartbeatAlarmReceiver extends BroadcastReceiver {
private OnAlarmReceivedListener mListener;
public interface OnAlarmReceivedListener {
/**
* Callback to call when a heart beat alarm received.
*/
public void onHeartBeatAlarmReceived();
}
public HeartbeatAlarmReceiver(OnAlarmReceivedListener listener) {
mListener = listener;
}
@Override
public void onReceive(Context context, Intent intent) {
mListener.onHeartBeatAlarmReceived();
}
}
但是,這需要一個帶參數的構造函數來設置偵聽器,但清單註冊的BroadcastReceiver似乎是由默認構造函數啓動的。我知道我可以通過給IntentFilter在代碼中註冊接收者,但出於某種原因,我必須使用明確的Intent來啓動接收者,這意味着我必須在清單中聲明它。 (見this)所以我該怎麼辦?
**「我想在收到警報時通知服務」**:確定,只需在'onReceive(...)'方法中調用'context.startService(...)'傳遞一個'Intent'作爲'Intent'的附加數據。 – Squonk
「出於某種原因,我必須使用明確的意圖啓動接收器」。這是爲什麼?爲安全考慮,請使用 – matiash
。因爲隱式意圖可以由其他應用程序發送。 – teejoe