Я разрабатываю приложение для Android, которое необходимо обнаружить входящие и исходящие телефонные звонки, даже когда приложение убито. Я внедрил Broadcastreceiver (
Код: Выделить всё
CallReceiver
Однако проблема возникает, когда приложение < Strong> Stopped или убит -Broadcastreceiver больше не получает события телефонных звонков. Я хочу обнаружить телефонные звонки, не полагаясь на услугу переднего плана с постоянным уведомлением .
[*] с использованием Broadcastreceiver
- Реализованный CallReceiver to to Слушайте ThenkonyManager.action_phone_state_changed .
- Работает, когда приложение находится в фоновом режиме, но прекращает работу, когда приложение убито . < br/>
- Br/> Внедренное работника , который регистрирует CallReceiver .
- не работает, когда приложение убито , потому что Workmanager не предназначено для прослушивания вещания в реальном времени. Сервис (работает, но не идеально)
Создал CallmonitoringService , который динамически регистрирует приемник. - Работает даже когда приложение убито, но требуется постоянное уведомление , которого я хочу избежать.
Связанная служба < /code> останавливается, когда Приложение убито, поэтому оно не решает проблему. /h2>
Broadcastreceiver (callReceiver) < /h3>
Код: Выделить всё
class CallReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (context == null || intent?.action != TelephonyManager.ACTION_PHONE_STATE_CHANGED) return
val state = intent.getStringExtra(TelephonyManager.EXTRA_STATE)
val incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)
when (state) {
TelephonyManager.EXTRA_STATE_RINGING -> {
Log.d("CallReceiver", "Incoming call from: $incomingNumber")
}
TelephonyManager.EXTRA_STATE_OFFHOOK -> {
Log.d("CallReceiver", "Call answered or dialed!")
}
TelephonyManager.EXTRA_STATE_IDLE -> {
Log.d("CallReceiver", "Call ended!")
}
}
}
}
< /code>
❓ Как я могу обнаружить телефонные звонки, даже когда приложение убито, без использования службы переднего плана с постоянным уведомлением? < /h2>
Есть ли способ перезагрузить мой CallReceiver
Подробнее здесь: https://stackoverflow.com/questions/794 ... und-servic