Ответ
Для взаимодействия с Service через уведомления можно использовать PendingIntent, который запускает Service или передает данные через Intent.
- Создание уведомления с действиями:
val intent = Intent(context, MyService::class.java).apply {
action = "ACTION_STOP"
}
val pendingIntent = PendingIntent.getService(
context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setContentTitle("Service Running")
.addAction(R.drawable.ic_stop, "Stop", pendingIntent)
.build()
- Обработка в
Service:
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
when (intent?.action) {
"ACTION_STOP" -> stopSelf()
}
return START_STICKY
}
Важно:
- Используйте
PendingIntent.FLAG_IMMUTABLEдля Android 12+. - Для двустороннего взаимодействия можно использовать
BroadcastReceiverилиBoundService.